diff --git a/packages/applications/turbo-blog/.gitignore b/packages/applications/blog/.gitignore similarity index 100% rename from packages/applications/turbo-blog/.gitignore rename to packages/applications/blog/.gitignore diff --git a/packages/applications/turbo-blog/package.json b/packages/applications/blog/package.json similarity index 98% rename from packages/applications/turbo-blog/package.json rename to packages/applications/blog/package.json index dc2d09d6..60a421bf 100644 --- a/packages/applications/turbo-blog/package.json +++ b/packages/applications/blog/package.json @@ -1,5 +1,5 @@ { - "name": "turbo-blog", + "name": "blog", "version": "1.0.0", "description": "", "keywords": [], diff --git a/packages/applications/turbo-blog/rspack.config.client.ts b/packages/applications/blog/rspack.config.client.ts similarity index 100% rename from packages/applications/turbo-blog/rspack.config.client.ts rename to packages/applications/blog/rspack.config.client.ts diff --git a/packages/applications/turbo-blog/rspack.config.server.ts b/packages/applications/blog/rspack.config.server.ts similarity index 100% rename from packages/applications/turbo-blog/rspack.config.server.ts rename to packages/applications/blog/rspack.config.server.ts diff --git a/packages/applications/turbo-blog/rspack.config.stylesheet.ts b/packages/applications/blog/rspack.config.stylesheet.ts similarity index 100% rename from packages/applications/turbo-blog/rspack.config.stylesheet.ts rename to packages/applications/blog/rspack.config.stylesheet.ts diff --git a/packages/applications/turbo-blog/src/articles/draft/about-new-core-web-vitals.md b/packages/applications/blog/src/articles/draft/about-new-core-web-vitals.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/draft/about-new-core-web-vitals.md rename to packages/applications/blog/src/articles/draft/about-new-core-web-vitals.md diff --git a/packages/applications/turbo-blog/src/articles/draft/about-wasmtime.md b/packages/applications/blog/src/articles/draft/about-wasmtime.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/draft/about-wasmtime.md rename to packages/applications/blog/src/articles/draft/about-wasmtime.md diff --git a/packages/applications/turbo-blog/src/articles/draft/learn-browser-through-creating.md b/packages/applications/blog/src/articles/draft/learn-browser-through-creating.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/draft/learn-browser-through-creating.md rename to packages/applications/blog/src/articles/draft/learn-browser-through-creating.md diff --git a/packages/applications/turbo-blog/src/articles/en/eslint-plugin-for-orthographical-variants.md b/packages/applications/blog/src/articles/en/eslint-plugin-for-orthographical-variants.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/en/eslint-plugin-for-orthographical-variants.md rename to packages/applications/blog/src/articles/en/eslint-plugin-for-orthographical-variants.md diff --git a/packages/applications/turbo-blog/src/articles/en/introduction-treeche.md b/packages/applications/blog/src/articles/en/introduction-treeche.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/en/introduction-treeche.md rename to packages/applications/blog/src/articles/en/introduction-treeche.md diff --git a/packages/applications/turbo-blog/src/articles/en/m17n-with-cloudflare-workers.md b/packages/applications/blog/src/articles/en/m17n-with-cloudflare-workers.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/en/m17n-with-cloudflare-workers.md rename to packages/applications/blog/src/articles/en/m17n-with-cloudflare-workers.md diff --git a/packages/applications/turbo-blog/src/articles/en/pnpm-outdated-command-supports-json-format.md b/packages/applications/blog/src/articles/en/pnpm-outdated-command-supports-json-format.md similarity index 100% rename from packages/applications/turbo-blog/src/articles/en/pnpm-outdated-command-supports-json-format.md rename to packages/applications/blog/src/articles/en/pnpm-outdated-command-supports-json-format.md diff --git a/packages/applications/turbo-blog/src/articles/third-pirty.json b/packages/applications/blog/src/articles/third-pirty.json similarity index 100% rename from packages/applications/turbo-blog/src/articles/third-pirty.json rename to packages/applications/blog/src/articles/third-pirty.json diff --git a/packages/applications/turbo-blog/src/assets/browser-on-browser/sys.png b/packages/applications/blog/src/assets/browser-on-browser/sys.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/browser-on-browser/sys.png rename to packages/applications/blog/src/assets/browser-on-browser/sys.png diff --git a/packages/applications/turbo-blog/src/assets/introduction-to-AST/ast-overview.png b/packages/applications/blog/src/assets/introduction-to-AST/ast-overview.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/introduction-to-AST/ast-overview.png rename to packages/applications/blog/src/assets/introduction-to-AST/ast-overview.png diff --git a/packages/applications/turbo-blog/src/assets/introduction-to-AST/ast-tool.png b/packages/applications/blog/src/assets/introduction-to-AST/ast-tool.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/introduction-to-AST/ast-tool.png rename to packages/applications/blog/src/assets/introduction-to-AST/ast-tool.png diff --git a/packages/applications/turbo-blog/src/assets/introduction-to-AST/ast-tree.png b/packages/applications/blog/src/assets/introduction-to-AST/ast-tree.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/introduction-to-AST/ast-tree.png rename to packages/applications/blog/src/assets/introduction-to-AST/ast-tree.png diff --git a/packages/applications/turbo-blog/src/assets/introduction-to-AST/transform.png b/packages/applications/blog/src/assets/introduction-to-AST/transform.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/introduction-to-AST/transform.png rename to packages/applications/blog/src/assets/introduction-to-AST/transform.png diff --git a/packages/applications/turbo-blog/src/assets/log-2020/kusa.png b/packages/applications/blog/src/assets/log-2020/kusa.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/log-2020/kusa.png rename to packages/applications/blog/src/assets/log-2020/kusa.png diff --git a/packages/applications/turbo-blog/src/assets/log-2020/newkusa.png b/packages/applications/blog/src/assets/log-2020/newkusa.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/log-2020/newkusa.png rename to packages/applications/blog/src/assets/log-2020/newkusa.png diff --git a/packages/applications/turbo-blog/src/assets/log-ca-web-speed-hackathon/hackathon-res.png b/packages/applications/blog/src/assets/log-ca-web-speed-hackathon/hackathon-res.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/log-ca-web-speed-hackathon/hackathon-res.png rename to packages/applications/blog/src/assets/log-ca-web-speed-hackathon/hackathon-res.png diff --git a/packages/applications/turbo-blog/src/assets/log-ca-web-speed-hackathon/webpack-bundle-analyzer.png b/packages/applications/blog/src/assets/log-ca-web-speed-hackathon/webpack-bundle-analyzer.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/log-ca-web-speed-hackathon/webpack-bundle-analyzer.png rename to packages/applications/blog/src/assets/log-ca-web-speed-hackathon/webpack-bundle-analyzer.png diff --git a/packages/applications/turbo-blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png b/packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png rename to packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png diff --git a/packages/applications/turbo-blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png b/packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png rename to packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png diff --git a/packages/applications/turbo-blog/src/assets/pnpm-outdated-command-supports-json-format/tweet.png b/packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/tweet.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/pnpm-outdated-command-supports-json-format/tweet.png rename to packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/tweet.png diff --git a/packages/applications/turbo-blog/src/assets/remake-blog-with-nextjs-nowsh/27-1.jpeg b/packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-1.jpeg similarity index 100% rename from packages/applications/turbo-blog/src/assets/remake-blog-with-nextjs-nowsh/27-1.jpeg rename to packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-1.jpeg diff --git a/packages/applications/turbo-blog/src/assets/remake-blog-with-nextjs-nowsh/27-2.png b/packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-2.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/remake-blog-with-nextjs-nowsh/27-2.png rename to packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-2.png diff --git a/packages/applications/turbo-blog/src/assets/remake-blog-with-nextjs-nowsh/27-3.png b/packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-3.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/remake-blog-with-nextjs-nowsh/27-3.png rename to packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-3.png diff --git a/packages/applications/turbo-blog/src/assets/static/AMP.png b/packages/applications/blog/src/assets/static/AMP.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/AMP.png rename to packages/applications/blog/src/assets/static/AMP.png diff --git a/packages/applications/turbo-blog/src/assets/static/a11y-dark.min.css b/packages/applications/blog/src/assets/static/a11y-dark.min.css similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/a11y-dark.min.css rename to packages/applications/blog/src/assets/static/a11y-dark.min.css diff --git a/packages/applications/turbo-blog/src/assets/static/a11y-dark.min.css.d.ts b/packages/applications/blog/src/assets/static/a11y-dark.min.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/a11y-dark.min.css.d.ts rename to packages/applications/blog/src/assets/static/a11y-dark.min.css.d.ts diff --git a/packages/applications/turbo-blog/src/assets/static/banana.png b/packages/applications/blog/src/assets/static/banana.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/banana.png rename to packages/applications/blog/src/assets/static/banana.png diff --git a/packages/applications/turbo-blog/src/assets/static/cloudflare.png b/packages/applications/blog/src/assets/static/cloudflare.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/cloudflare.png rename to packages/applications/blog/src/assets/static/cloudflare.png diff --git a/packages/applications/turbo-blog/src/assets/static/e-mail.png b/packages/applications/blog/src/assets/static/e-mail.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/e-mail.png rename to packages/applications/blog/src/assets/static/e-mail.png diff --git a/packages/applications/turbo-blog/src/assets/static/earth.png b/packages/applications/blog/src/assets/static/earth.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/earth.png rename to packages/applications/blog/src/assets/static/earth.png diff --git a/packages/applications/turbo-blog/src/assets/static/earth_africa.png b/packages/applications/blog/src/assets/static/earth_africa.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/earth_africa.png rename to packages/applications/blog/src/assets/static/earth_africa.png diff --git a/packages/applications/turbo-blog/src/assets/static/fastly.png b/packages/applications/blog/src/assets/static/fastly.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/fastly.png rename to packages/applications/blog/src/assets/static/fastly.png diff --git a/packages/applications/turbo-blog/src/assets/static/favicon.ico b/packages/applications/blog/src/assets/static/favicon.ico similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/favicon.ico rename to packages/applications/blog/src/assets/static/favicon.ico diff --git a/packages/applications/turbo-blog/src/assets/static/fire.png b/packages/applications/blog/src/assets/static/fire.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/fire.png rename to packages/applications/blog/src/assets/static/fire.png diff --git a/packages/applications/turbo-blog/src/assets/static/gb.png b/packages/applications/blog/src/assets/static/gb.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/gb.png rename to packages/applications/blog/src/assets/static/gb.png diff --git a/packages/applications/turbo-blog/src/assets/static/github.svg b/packages/applications/blog/src/assets/static/github.svg similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/github.svg rename to packages/applications/blog/src/assets/static/github.svg diff --git a/packages/applications/turbo-blog/src/assets/static/icon.png b/packages/applications/blog/src/assets/static/icon.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/icon.png rename to packages/applications/blog/src/assets/static/icon.png diff --git a/packages/applications/turbo-blog/src/assets/static/icon_blur.png b/packages/applications/blog/src/assets/static/icon_blur.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/icon_blur.png rename to packages/applications/blog/src/assets/static/icon_blur.png diff --git a/packages/applications/turbo-blog/src/assets/static/icon_thatsme.png b/packages/applications/blog/src/assets/static/icon_thatsme.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/icon_thatsme.png rename to packages/applications/blog/src/assets/static/icon_thatsme.png diff --git a/packages/applications/turbo-blog/src/assets/static/icon_transparent_header.png b/packages/applications/blog/src/assets/static/icon_transparent_header.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/icon_transparent_header.png rename to packages/applications/blog/src/assets/static/icon_transparent_header.png diff --git a/packages/applications/turbo-blog/src/assets/static/javascript.png b/packages/applications/blog/src/assets/static/javascript.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/javascript.png rename to packages/applications/blog/src/assets/static/javascript.png diff --git a/packages/applications/turbo-blog/src/assets/static/jp.png b/packages/applications/blog/src/assets/static/jp.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/jp.png rename to packages/applications/blog/src/assets/static/jp.png diff --git a/packages/applications/turbo-blog/src/assets/static/linkedin.svg b/packages/applications/blog/src/assets/static/linkedin.svg similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/linkedin.svg rename to packages/applications/blog/src/assets/static/linkedin.svg diff --git a/packages/applications/turbo-blog/src/assets/static/placeholder.png b/packages/applications/blog/src/assets/static/placeholder.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/placeholder.png rename to packages/applications/blog/src/assets/static/placeholder.png diff --git a/packages/applications/turbo-blog/src/assets/static/react.png b/packages/applications/blog/src/assets/static/react.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/react.png rename to packages/applications/blog/src/assets/static/react.png diff --git a/packages/applications/turbo-blog/src/assets/static/rust.png b/packages/applications/blog/src/assets/static/rust.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/rust.png rename to packages/applications/blog/src/assets/static/rust.png diff --git a/packages/applications/turbo-blog/src/assets/static/shinyaigeek_icon.png b/packages/applications/blog/src/assets/static/shinyaigeek_icon.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/shinyaigeek_icon.png rename to packages/applications/blog/src/assets/static/shinyaigeek_icon.png diff --git a/packages/applications/turbo-blog/src/assets/static/shinyaigeek_portrait_transparent.png b/packages/applications/blog/src/assets/static/shinyaigeek_portrait_transparent.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/shinyaigeek_portrait_transparent.png rename to packages/applications/blog/src/assets/static/shinyaigeek_portrait_transparent.png diff --git a/packages/applications/turbo-blog/src/assets/static/spider_web.png b/packages/applications/blog/src/assets/static/spider_web.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/spider_web.png rename to packages/applications/blog/src/assets/static/spider_web.png diff --git a/packages/applications/turbo-blog/src/assets/static/twitter.svg b/packages/applications/blog/src/assets/static/twitter.svg similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/twitter.svg rename to packages/applications/blog/src/assets/static/twitter.svg diff --git a/packages/applications/turbo-blog/src/assets/static/typescript.png b/packages/applications/blog/src/assets/static/typescript.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/typescript.png rename to packages/applications/blog/src/assets/static/typescript.png diff --git a/packages/applications/turbo-blog/src/assets/static/us.png b/packages/applications/blog/src/assets/static/us.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/static/us.png rename to packages/applications/blog/src/assets/static/us.png diff --git a/packages/applications/turbo-blog/src/assets/what-is-TypeScript-s-reversal/25-3.png b/packages/applications/blog/src/assets/what-is-TypeScript-s-reversal/25-3.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/what-is-TypeScript-s-reversal/25-3.png rename to packages/applications/blog/src/assets/what-is-TypeScript-s-reversal/25-3.png diff --git a/packages/applications/turbo-blog/src/assets/what-is-TypeScript-s-reversal/25-4.png b/packages/applications/blog/src/assets/what-is-TypeScript-s-reversal/25-4.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/what-is-TypeScript-s-reversal/25-4.png rename to packages/applications/blog/src/assets/what-is-TypeScript-s-reversal/25-4.png diff --git a/packages/applications/turbo-blog/src/assets/without-create-react-app/21-2.png b/packages/applications/blog/src/assets/without-create-react-app/21-2.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/without-create-react-app/21-2.png rename to packages/applications/blog/src/assets/without-create-react-app/21-2.png diff --git a/packages/applications/turbo-blog/src/assets/without-create-react-app/21-3.png b/packages/applications/blog/src/assets/without-create-react-app/21-3.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/without-create-react-app/21-3.png rename to packages/applications/blog/src/assets/without-create-react-app/21-3.png diff --git a/packages/applications/turbo-blog/src/assets/without-create-react-app/21-4.gif b/packages/applications/blog/src/assets/without-create-react-app/21-4.gif similarity index 100% rename from packages/applications/turbo-blog/src/assets/without-create-react-app/21-4.gif rename to packages/applications/blog/src/assets/without-create-react-app/21-4.gif diff --git a/packages/applications/turbo-blog/src/assets/without-create-react-app/21-5.png b/packages/applications/blog/src/assets/without-create-react-app/21-5.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/without-create-react-app/21-5.png rename to packages/applications/blog/src/assets/without-create-react-app/21-5.png diff --git a/packages/applications/turbo-blog/src/assets/without-create-react-app/21-6.png b/packages/applications/blog/src/assets/without-create-react-app/21-6.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/without-create-react-app/21-6.png rename to packages/applications/blog/src/assets/without-create-react-app/21-6.png diff --git a/packages/applications/turbo-blog/src/assets/without-create-react-app/21-7.png b/packages/applications/blog/src/assets/without-create-react-app/21-7.png similarity index 100% rename from packages/applications/turbo-blog/src/assets/without-create-react-app/21-7.png rename to packages/applications/blog/src/assets/without-create-react-app/21-7.png diff --git a/packages/applications/turbo-blog/src/build/application/chooseLanguage/chooseLanguage.ts b/packages/applications/blog/src/build/application/chooseLanguage/chooseLanguage.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/application/chooseLanguage/chooseLanguage.ts rename to packages/applications/blog/src/build/application/chooseLanguage/chooseLanguage.ts diff --git a/packages/applications/turbo-blog/src/build/application/getBlogPost/getBlogPost.usecase.ts b/packages/applications/blog/src/build/application/getBlogPost/getBlogPost.usecase.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/application/getBlogPost/getBlogPost.usecase.ts rename to packages/applications/blog/src/build/application/getBlogPost/getBlogPost.usecase.ts diff --git a/packages/applications/turbo-blog/src/build/application/getBlogPosts/getBlogposts.usecase.ts b/packages/applications/blog/src/build/application/getBlogPosts/getBlogposts.usecase.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/application/getBlogPosts/getBlogposts.usecase.ts rename to packages/applications/blog/src/build/application/getBlogPosts/getBlogposts.usecase.ts diff --git a/packages/applications/turbo-blog/src/build/babel.config.js b/packages/applications/blog/src/build/babel.config.js similarity index 100% rename from packages/applications/turbo-blog/src/build/babel.config.js rename to packages/applications/blog/src/build/babel.config.js diff --git a/packages/applications/turbo-blog/src/build/build.ts b/packages/applications/blog/src/build/build.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/build.ts rename to packages/applications/blog/src/build/build.ts diff --git a/packages/applications/turbo-blog/src/build/context/context.ts b/packages/applications/blog/src/build/context/context.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/context/context.ts rename to packages/applications/blog/src/build/context/context.ts diff --git a/packages/applications/turbo-blog/src/build/handlers/index/generate.tsx b/packages/applications/blog/src/build/handlers/index/generate.tsx similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/index/generate.tsx rename to packages/applications/blog/src/build/handlers/index/generate.tsx diff --git a/packages/applications/turbo-blog/src/build/handlers/index/output.tsx b/packages/applications/blog/src/build/handlers/index/output.tsx similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/index/output.tsx rename to packages/applications/blog/src/build/handlers/index/output.tsx diff --git a/packages/applications/turbo-blog/src/build/handlers/post/generate.tsx b/packages/applications/blog/src/build/handlers/post/generate.tsx similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/post/generate.tsx rename to packages/applications/blog/src/build/handlers/post/generate.tsx diff --git a/packages/applications/turbo-blog/src/build/handlers/post/getBlogChildren/getBlogChildren.ts b/packages/applications/blog/src/build/handlers/post/getBlogChildren/getBlogChildren.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/post/getBlogChildren/getBlogChildren.ts rename to packages/applications/blog/src/build/handlers/post/getBlogChildren/getBlogChildren.ts diff --git a/packages/applications/turbo-blog/src/build/handlers/post/output.tsx b/packages/applications/blog/src/build/handlers/post/output.tsx similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/post/output.tsx rename to packages/applications/blog/src/build/handlers/post/output.tsx diff --git a/packages/applications/turbo-blog/src/build/handlers/profile/generate.tsx b/packages/applications/blog/src/build/handlers/profile/generate.tsx similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/profile/generate.tsx rename to packages/applications/blog/src/build/handlers/profile/generate.tsx diff --git a/packages/applications/turbo-blog/src/build/handlers/profile/output.tsx b/packages/applications/blog/src/build/handlers/profile/output.tsx similarity index 100% rename from packages/applications/turbo-blog/src/build/handlers/profile/output.tsx rename to packages/applications/blog/src/build/handlers/profile/output.tsx diff --git a/packages/applications/turbo-blog/src/build/model/blog/__fixture__/invalid-blog.md b/packages/applications/blog/src/build/model/blog/__fixture__/invalid-blog.md similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/__fixture__/invalid-blog.md rename to packages/applications/blog/src/build/model/blog/__fixture__/invalid-blog.md diff --git a/packages/applications/turbo-blog/src/build/model/blog/__fixture__/valid-blog.md b/packages/applications/blog/src/build/model/blog/__fixture__/valid-blog.md similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/__fixture__/valid-blog.md rename to packages/applications/blog/src/build/model/blog/__fixture__/valid-blog.md diff --git a/packages/applications/turbo-blog/src/build/model/blog/__snapshot__/extract-blog-metadata/valid-blog.txt b/packages/applications/blog/src/build/model/blog/__snapshot__/extract-blog-metadata/valid-blog.txt similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/__snapshot__/extract-blog-metadata/valid-blog.txt rename to packages/applications/blog/src/build/model/blog/__snapshot__/extract-blog-metadata/valid-blog.txt diff --git a/packages/applications/turbo-blog/src/build/model/blog/blog.entity.ts b/packages/applications/blog/src/build/model/blog/blog.entity.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/blog.entity.ts rename to packages/applications/blog/src/build/model/blog/blog.entity.ts diff --git a/packages/applications/turbo-blog/src/build/model/blog/blog.repository.ts b/packages/applications/blog/src/build/model/blog/blog.repository.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/blog.repository.ts rename to packages/applications/blog/src/build/model/blog/blog.repository.ts diff --git a/packages/applications/turbo-blog/src/build/model/blog/extract-blog-metadata.test.ts b/packages/applications/blog/src/build/model/blog/extract-blog-metadata.test.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/extract-blog-metadata.test.ts rename to packages/applications/blog/src/build/model/blog/extract-blog-metadata.test.ts diff --git a/packages/applications/turbo-blog/src/build/model/blog/extract-blog-metadata.ts b/packages/applications/blog/src/build/model/blog/extract-blog-metadata.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/extract-blog-metadata.ts rename to packages/applications/blog/src/build/model/blog/extract-blog-metadata.ts diff --git a/packages/applications/turbo-blog/src/build/model/blog/parse-blog-content.ts b/packages/applications/blog/src/build/model/blog/parse-blog-content.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/blog/parse-blog-content.ts rename to packages/applications/blog/src/build/model/blog/parse-blog-content.ts diff --git a/packages/applications/turbo-blog/src/build/model/content/content.entity.ts b/packages/applications/blog/src/build/model/content/content.entity.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/content/content.entity.ts rename to packages/applications/blog/src/build/model/content/content.entity.ts diff --git a/packages/applications/turbo-blog/src/build/model/language/language.entity.ts b/packages/applications/blog/src/build/model/language/language.entity.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/language/language.entity.ts rename to packages/applications/blog/src/build/model/language/language.entity.ts diff --git a/packages/applications/turbo-blog/src/build/model/m17n/m17n.entity.ts b/packages/applications/blog/src/build/model/m17n/m17n.entity.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/model/m17n/m17n.entity.ts rename to packages/applications/blog/src/build/model/m17n/m17n.entity.ts diff --git a/packages/applications/turbo-blog/src/build/plugin/language.ts b/packages/applications/blog/src/build/plugin/language.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/plugin/language.ts rename to packages/applications/blog/src/build/plugin/language.ts diff --git a/packages/applications/turbo-blog/src/build/util/addDOCTYPE.ts b/packages/applications/blog/src/build/util/addDOCTYPE.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/addDOCTYPE.ts rename to packages/applications/blog/src/build/util/addDOCTYPE.ts diff --git a/packages/applications/turbo-blog/src/build/util/generateHash.ts b/packages/applications/blog/src/build/util/generateHash.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/generateHash.ts rename to packages/applications/blog/src/build/util/generateHash.ts diff --git a/packages/applications/turbo-blog/src/build/util/getBlogPost.ts b/packages/applications/blog/src/build/util/getBlogPost.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/getBlogPost.ts rename to packages/applications/blog/src/build/util/getBlogPost.ts diff --git a/packages/applications/turbo-blog/src/build/util/getBlogPosts.ts b/packages/applications/blog/src/build/util/getBlogPosts.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/getBlogPosts.ts rename to packages/applications/blog/src/build/util/getBlogPosts.ts diff --git a/packages/applications/turbo-blog/src/build/util/getOmmit.ts b/packages/applications/blog/src/build/util/getOmmit.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/getOmmit.ts rename to packages/applications/blog/src/build/util/getOmmit.ts diff --git a/packages/applications/turbo-blog/src/build/util/getRss.ts b/packages/applications/blog/src/build/util/getRss.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/getRss.ts rename to packages/applications/blog/src/build/util/getRss.ts diff --git a/packages/applications/turbo-blog/src/build/util/getSitemap.ts b/packages/applications/blog/src/build/util/getSitemap.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/getSitemap.ts rename to packages/applications/blog/src/build/util/getSitemap.ts diff --git a/packages/applications/turbo-blog/src/build/util/getThirdPirty.ts b/packages/applications/blog/src/build/util/getThirdPirty.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/getThirdPirty.ts rename to packages/applications/blog/src/build/util/getThirdPirty.ts diff --git a/packages/applications/turbo-blog/src/build/util/writeFileWithDir.ts b/packages/applications/blog/src/build/util/writeFileWithDir.ts similarity index 100% rename from packages/applications/turbo-blog/src/build/util/writeFileWithDir.ts rename to packages/applications/blog/src/build/util/writeFileWithDir.ts diff --git a/packages/applications/turbo-blog/src/client/main.tsx b/packages/applications/blog/src/client/main.tsx similarity index 100% rename from packages/applications/turbo-blog/src/client/main.tsx rename to packages/applications/blog/src/client/main.tsx diff --git a/packages/applications/turbo-blog/src/react-env.d.ts b/packages/applications/blog/src/react-env.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/react-env.d.ts rename to packages/applications/blog/src/react-env.d.ts diff --git a/packages/applications/turbo-blog/src/stylesheet.ts b/packages/applications/blog/src/stylesheet.ts similarity index 100% rename from packages/applications/turbo-blog/src/stylesheet.ts rename to packages/applications/blog/src/stylesheet.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Button/Button.module.css b/packages/applications/blog/src/ui/components/Button/Button.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Button/Button.module.css rename to packages/applications/blog/src/ui/components/Button/Button.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Button/Button.module.css.d.ts b/packages/applications/blog/src/ui/components/Button/Button.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Button/Button.module.css.d.ts rename to packages/applications/blog/src/ui/components/Button/Button.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Button/Button.tsx b/packages/applications/blog/src/ui/components/Button/Button.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Button/Button.tsx rename to packages/applications/blog/src/ui/components/Button/Button.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Contact/Contact.module.css b/packages/applications/blog/src/ui/components/Contact/Contact.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Contact/Contact.module.css rename to packages/applications/blog/src/ui/components/Contact/Contact.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Contact/Contact.module.css.d.ts b/packages/applications/blog/src/ui/components/Contact/Contact.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Contact/Contact.module.css.d.ts rename to packages/applications/blog/src/ui/components/Contact/Contact.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Contact/Contact.tsx b/packages/applications/blog/src/ui/components/Contact/Contact.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Contact/Contact.tsx rename to packages/applications/blog/src/ui/components/Contact/Contact.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Counter/Counter.tsx b/packages/applications/blog/src/ui/components/Counter/Counter.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Counter/Counter.tsx rename to packages/applications/blog/src/ui/components/Counter/Counter.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/DecorationTag/DecorationTag.module.css b/packages/applications/blog/src/ui/components/DecorationTag/DecorationTag.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/DecorationTag/DecorationTag.module.css rename to packages/applications/blog/src/ui/components/DecorationTag/DecorationTag.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/DecorationTag/DecorationTag.module.css.d.ts b/packages/applications/blog/src/ui/components/DecorationTag/DecorationTag.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/DecorationTag/DecorationTag.module.css.d.ts rename to packages/applications/blog/src/ui/components/DecorationTag/DecorationTag.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/DecorationTag/DecorationTag.tsx b/packages/applications/blog/src/ui/components/DecorationTag/DecorationTag.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/DecorationTag/DecorationTag.tsx rename to packages/applications/blog/src/ui/components/DecorationTag/DecorationTag.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Divider/Divider.module.css b/packages/applications/blog/src/ui/components/Divider/Divider.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Divider/Divider.module.css rename to packages/applications/blog/src/ui/components/Divider/Divider.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Divider/Divider.module.css.d.ts b/packages/applications/blog/src/ui/components/Divider/Divider.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Divider/Divider.module.css.d.ts rename to packages/applications/blog/src/ui/components/Divider/Divider.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Divider/Divider.tsx b/packages/applications/blog/src/ui/components/Divider/Divider.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Divider/Divider.tsx rename to packages/applications/blog/src/ui/components/Divider/Divider.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Footer/Footer.module.css b/packages/applications/blog/src/ui/components/Footer/Footer.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Footer/Footer.module.css rename to packages/applications/blog/src/ui/components/Footer/Footer.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Footer/Footer.module.css.d.ts b/packages/applications/blog/src/ui/components/Footer/Footer.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Footer/Footer.module.css.d.ts rename to packages/applications/blog/src/ui/components/Footer/Footer.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Footer/Footer.tsx b/packages/applications/blog/src/ui/components/Footer/Footer.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Footer/Footer.tsx rename to packages/applications/blog/src/ui/components/Footer/Footer.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Header/Header.module.css b/packages/applications/blog/src/ui/components/Header/Header.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Header/Header.module.css rename to packages/applications/blog/src/ui/components/Header/Header.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Header/Header.module.css.d.ts b/packages/applications/blog/src/ui/components/Header/Header.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Header/Header.module.css.d.ts rename to packages/applications/blog/src/ui/components/Header/Header.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Header/Header.tsx b/packages/applications/blog/src/ui/components/Header/Header.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Header/Header.tsx rename to packages/applications/blog/src/ui/components/Header/Header.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Language/Language.module.css b/packages/applications/blog/src/ui/components/Language/Language.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Language/Language.module.css rename to packages/applications/blog/src/ui/components/Language/Language.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Language/Language.module.css.d.ts b/packages/applications/blog/src/ui/components/Language/Language.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Language/Language.module.css.d.ts rename to packages/applications/blog/src/ui/components/Language/Language.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Language/Language.tsx b/packages/applications/blog/src/ui/components/Language/Language.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Language/Language.tsx rename to packages/applications/blog/src/ui/components/Language/Language.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Layout/Layout.module.css b/packages/applications/blog/src/ui/components/Layout/Layout.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Layout/Layout.module.css rename to packages/applications/blog/src/ui/components/Layout/Layout.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Layout/Layout.module.css.d.ts b/packages/applications/blog/src/ui/components/Layout/Layout.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Layout/Layout.module.css.d.ts rename to packages/applications/blog/src/ui/components/Layout/Layout.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Layout/Layout.tsx b/packages/applications/blog/src/ui/components/Layout/Layout.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Layout/Layout.tsx rename to packages/applications/blog/src/ui/components/Layout/Layout.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Shell/shell.tsx b/packages/applications/blog/src/ui/components/Shell/shell.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Shell/shell.tsx rename to packages/applications/blog/src/ui/components/Shell/shell.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/ShinyaigeekAnimation/ShinyaigeekAnimation.tsx b/packages/applications/blog/src/ui/components/ShinyaigeekAnimation/ShinyaigeekAnimation.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/ShinyaigeekAnimation/ShinyaigeekAnimation.tsx rename to packages/applications/blog/src/ui/components/ShinyaigeekAnimation/ShinyaigeekAnimation.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css b/packages/applications/blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css rename to packages/applications/blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css.d.ts b/packages/applications/blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css.d.ts rename to packages/applications/blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.tsx b/packages/applications/blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.tsx rename to packages/applications/blog/src/ui/components/ShinyaigeekPortrait/ShinyaigeekPortrait.tsx diff --git a/packages/applications/turbo-blog/src/ui/components/Tag/Tag.module.css b/packages/applications/blog/src/ui/components/Tag/Tag.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Tag/Tag.module.css rename to packages/applications/blog/src/ui/components/Tag/Tag.module.css diff --git a/packages/applications/turbo-blog/src/ui/components/Tag/Tag.module.css.d.ts b/packages/applications/blog/src/ui/components/Tag/Tag.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Tag/Tag.module.css.d.ts rename to packages/applications/blog/src/ui/components/Tag/Tag.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/components/Tag/Tag.tsx b/packages/applications/blog/src/ui/components/Tag/Tag.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/components/Tag/Tag.tsx rename to packages/applications/blog/src/ui/components/Tag/Tag.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/Home.tsx b/packages/applications/blog/src/ui/pages/Home/Home.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/Home.tsx rename to packages/applications/blog/src/ui/pages/Home/Home.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css b/packages/applications/blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css rename to packages/applications/blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css.d.ts b/packages/applications/blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.tsx b/packages/applications/blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.tsx rename to packages/applications/blog/src/ui/pages/Home/components/FirstBoard/FirstBoard.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/Item/Item.module.css b/packages/applications/blog/src/ui/pages/Home/components/Item/Item.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/Item/Item.module.css rename to packages/applications/blog/src/ui/pages/Home/components/Item/Item.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/Item/Item.module.css.d.ts b/packages/applications/blog/src/ui/pages/Home/components/Item/Item.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/Item/Item.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Home/components/Item/Item.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/Item/Item.tsx b/packages/applications/blog/src/ui/pages/Home/components/Item/Item.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/Item/Item.tsx rename to packages/applications/blog/src/ui/pages/Home/components/Item/Item.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/StartStream/StarStream.module.css b/packages/applications/blog/src/ui/pages/Home/components/StartStream/StarStream.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/StartStream/StarStream.module.css rename to packages/applications/blog/src/ui/pages/Home/components/StartStream/StarStream.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/StartStream/StarStream.module.css.d.ts b/packages/applications/blog/src/ui/pages/Home/components/StartStream/StarStream.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/StartStream/StarStream.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Home/components/StartStream/StarStream.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/StartStream/StarStream.tsx b/packages/applications/blog/src/ui/pages/Home/components/StartStream/StarStream.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/StartStream/StarStream.tsx rename to packages/applications/blog/src/ui/pages/Home/components/StartStream/StarStream.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css b/packages/applications/blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css rename to packages/applications/blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css.d.ts b/packages/applications/blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.tsx b/packages/applications/blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.tsx rename to packages/applications/blog/src/ui/pages/Home/components/ThirdPirtyBlogItem/ThirdPirtyBlogItem.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/Post.module.css b/packages/applications/blog/src/ui/pages/Post/Post.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/Post.module.css rename to packages/applications/blog/src/ui/pages/Post/Post.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/Post.module.css.d.ts b/packages/applications/blog/src/ui/pages/Post/Post.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/Post.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Post/Post.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/Post.tsx b/packages/applications/blog/src/ui/pages/Post/Post.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/Post.tsx rename to packages/applications/blog/src/ui/pages/Post/Post.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/components/Anchor/Anchor.module.css b/packages/applications/blog/src/ui/pages/Post/components/Anchor/Anchor.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/components/Anchor/Anchor.module.css rename to packages/applications/blog/src/ui/pages/Post/components/Anchor/Anchor.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/components/Anchor/Anchor.module.css.d.ts b/packages/applications/blog/src/ui/pages/Post/components/Anchor/Anchor.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/components/Anchor/Anchor.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Post/components/Anchor/Anchor.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/components/Anchor/Anchor.tsx b/packages/applications/blog/src/ui/pages/Post/components/Anchor/Anchor.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/components/Anchor/Anchor.tsx rename to packages/applications/blog/src/ui/pages/Post/components/Anchor/Anchor.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css b/packages/applications/blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css rename to packages/applications/blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css.d.ts b/packages/applications/blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.tsx b/packages/applications/blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.tsx rename to packages/applications/blog/src/ui/pages/Post/components/PostMetaInfo/PostMetaInfo.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/Profile.module.css b/packages/applications/blog/src/ui/pages/Profile/Profile.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/Profile.module.css rename to packages/applications/blog/src/ui/pages/Profile/Profile.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/Profile.module.css.d.ts b/packages/applications/blog/src/ui/pages/Profile/Profile.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/Profile.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Profile/Profile.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/Profile.tsx b/packages/applications/blog/src/ui/pages/Profile/Profile.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/Profile.tsx rename to packages/applications/blog/src/ui/pages/Profile/Profile.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/Card/Card.module.css b/packages/applications/blog/src/ui/pages/Profile/components/Card/Card.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/Card/Card.module.css rename to packages/applications/blog/src/ui/pages/Profile/components/Card/Card.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/Card/Card.module.css.d.ts b/packages/applications/blog/src/ui/pages/Profile/components/Card/Card.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/Card/Card.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Profile/components/Card/Card.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/Card/Card.tsx b/packages/applications/blog/src/ui/pages/Profile/components/Card/Card.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/Card/Card.tsx rename to packages/applications/blog/src/ui/pages/Profile/components/Card/Card.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css b/packages/applications/blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css rename to packages/applications/blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css.d.ts b/packages/applications/blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalendar.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalender.tsx b/packages/applications/blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalender.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalender.tsx rename to packages/applications/blog/src/ui/pages/Profile/components/GitHubCalender/GitHubCalender.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css b/packages/applications/blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css rename to packages/applications/blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css.d.ts b/packages/applications/blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Profile/components/JobItem/JobItem.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/JobItem/JobItem.tsx b/packages/applications/blog/src/ui/pages/Profile/components/JobItem/JobItem.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/JobItem/JobItem.tsx rename to packages/applications/blog/src/ui/pages/Profile/components/JobItem/JobItem.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/Loading/Loading.module.css b/packages/applications/blog/src/ui/pages/Profile/components/Loading/Loading.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/Loading/Loading.module.css rename to packages/applications/blog/src/ui/pages/Profile/components/Loading/Loading.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/Loading/Loading.module.css.d.ts b/packages/applications/blog/src/ui/pages/Profile/components/Loading/Loading.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/Loading/Loading.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Profile/components/Loading/Loading.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/Loading/Loading.tsx b/packages/applications/blog/src/ui/pages/Profile/components/Loading/Loading.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/Loading/Loading.tsx rename to packages/applications/blog/src/ui/pages/Profile/components/Loading/Loading.tsx diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css b/packages/applications/blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css rename to packages/applications/blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css.d.ts b/packages/applications/blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css.d.ts similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css.d.ts rename to packages/applications/blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.module.css.d.ts diff --git a/packages/applications/turbo-blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.tsx b/packages/applications/blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.tsx similarity index 100% rename from packages/applications/turbo-blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.tsx rename to packages/applications/blog/src/ui/pages/Profile/components/ShinyaigeekCoreProfile/ShinyaigeekCoreProfile.tsx diff --git a/packages/applications/turbo-blog/src/universal/const.ts b/packages/applications/blog/src/universal/const.ts similarity index 100% rename from packages/applications/turbo-blog/src/universal/const.ts rename to packages/applications/blog/src/universal/const.ts diff --git a/packages/applications/turbo-blog/tsconfig.json b/packages/applications/blog/tsconfig.json similarity index 100% rename from packages/applications/turbo-blog/tsconfig.json rename to packages/applications/blog/tsconfig.json diff --git a/packages/applications/turbo-blog/webpack.config.client.ts b/packages/applications/blog/webpack.config.client.ts similarity index 100% rename from packages/applications/turbo-blog/webpack.config.client.ts rename to packages/applications/blog/webpack.config.client.ts diff --git a/packages/applications/turbo-blog/webpack.config.server.ts b/packages/applications/blog/webpack.config.server.ts similarity index 100% rename from packages/applications/turbo-blog/webpack.config.server.ts rename to packages/applications/blog/webpack.config.server.ts diff --git a/packages/applications/turbo-blog/src/articles/public/browser-on-browser.md b/packages/applications/turbo-blog/src/articles/public/browser-on-browser.md deleted file mode 100644 index 8339951a..00000000 --- a/packages/applications/turbo-blog/src/articles/public/browser-on-browser.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: ブラウザの上でブラウザを動かす -tags: [Programming, Rust, JavaScript, Web, Browser] -description: 自作ブラウザを実装した続きとして, Chrome ブラウザで自作ブラウザを動かす, ということをした際の学習ノートです. -publishedAt: 2021/12/10 -updatedAt: 2021/12/10 ---- - -## 初めに - -こんにちは, [しにゃい/Shinyaigeek](https://twitter.com/Shinyaigeek) です. - - -趣味でちまちまと作っていた自作ブラウザ [Shinyaic](https://github.com/shinyaigeek/shinyaic) を Chrome 上で動かすことができたので, それについて勉強ノートを書こうと思います. - -最初に, 実際に Chrome 上でどのように自作ブラウザが動いているかの様子を載せたいと思います. - -**`` の値が空の時は paint ボタンを押すとこちらで用意したHTML & CSSで描画される** - -![Shinyaic with default html](../../../assets/browser-on-browser/shinyaic.png) - -**example.com を入力に入れると, いい感じに描画される** - -![shinyaic with example.com](../../../assets/browser-on-browser/example.png) - -(実はそもそも自作ブラウザが開発途中で, example.comくらいしかまともに描画できませんがそこはご了承ください...) - -[Shinyaic Wasm Playground](https://shinyaic-wasm-playground.vercel.app/) から実際に Chrome ブラウザの上で自作ブラウザを動かすことができます. - -playground 自体のリポジトリは [https://github.com/Shinyaigeek/ShinyaicWasmPlayground](https://github.com/Shinyaigeek/ShinyaicWasmPlayground) です. - -また補足になるのですが, **ブラウザ** という言葉がどこまでを含むのか, についても先に決めておきたいと思います. 本稿ではブラウザは HTML や CSS を受け取って, それを元に描画するところ, ある種の HTML Rendering Engine とも言える部分をブラウザとして進めていきます. なので, JS Engine や HTTP 通信をする, といった部分は本稿の対象外となります. - -本稿ではこの自作ブラウザの実装についての詳細には触れるつもりがありません, 興味がある方は以下のスライドを見てくださると幸いです. - -[![](https://files.speakerdeck.com/presentations/f70e84d625ae44949d1a6f6a87909011/slide_0.jpg?19382839)](https://speakerdeck.com/shinyaigeek/burauzazuo-rifalsesu-me) - -## ブラウザの仕組み概略図 - -![browser system](/assets/browser-on-browser/sys.png) - -ブラウザの仕組みの概略図をおおまかに書くとこのようになっています. 本当は描画の処理はもう少し細かいんですし, ブラウザ固有の部分もあったりするのですがそこまで突っ込むと本題から外れてしまうため本稿では割愛します. - -まず HTML から DOM を構築, CSS から CSSOM を構築して, それらをもとに `RenderTree` を構築します. この `RenderTree` には描画に必要な情報が格納されます. DOM は **Document Object Model** という名の通り, HTML のマークアップの構造に基づいた情報が格納されています. 例えばこのノードはH1要素である...と言ったこと, あるいは `
` 要素 や `` 要素など描画されるわけではない要素についてのノードも格納されています. 一方 `RenderTree` は描画に必要な情報のみが格納されるので, `display: none;` が付与されていたりあるいは `
` 要素といった, 描画されない要素のノードは含まれません. また基本的にはそのノードが HTML における何タグであるか, といった情報も削げ落ちており, どんな Node であるか (Block か Inline か Scroll か etc...) か, そしてどんなスタイルが適応されるか, といった情報が格納されます. - - `RenderTree` を構築すれば, 次はそれを元に矩形情報を計算します. このノードがどれくらいの大きさで, どの位置に描画されるか, ということを計算して, それが完了すれば実際に描画処理を行います. - -## ブラウザ on ブラウザ - -このブラウザを動かすための処理のうち, 実際にブラウザ上で実行できる部分はシンプルなブラウザであれば意外に多いということに上のセクションで気付く方もいらっしゃるかと思います. - -HTML -> DOM にする処理や, `RenderTree` を構築する処理は OS のあれこれに依存している処理というわけではないので, 普通にブラウザ上のランタイムでも実行することができます. 今回は自作ブラウザを Rust で実装していたので, WASM へと compile した上でそれをブラウザで動かしていましたが, 普通に JavaScript で書けばそのまま動かすこともできます. - -単純に実装したブラウザがブラウザ上で動かすことが難しい主な箇所は, 描画処理と矩形情報を算出する処理となります. というのも僕の自作ブラウザや, 世の一般的なブラウザといったネイティブアプリが行う OS の低レイヤのAPIを用いて行われている描画処理をそのまま Web で行うってできなくない?となるのは至極当然のことと言えるでしょう. また矩形情報の算出も矩形情報を得るためにはこういった文をこのフォントサイズでこのフォントで描画するとどれくらいの幅, 高さをとるか, やあるいはどれくらいの window サイズで描画するか, といったことに依存してしまい, こうした処理も一筋縄ではいきません.(icedのように, for Web な出力もできるGUI Library for Native Appもありますが, 流石に即オチが過ぎるので今回はそれに頼りません) - -描画する処理, 矩形情報を算出する処理をブラウザ上で実行するために, これらの処理を for Web として [Canvas API](https://developer.mozilla.org/ja/docs/Web/API/Canvas_API) で行うよう実装できれば, Web上で, ブラウザ上で自作ブラウザを動かすことが可能なのでは? というのが本稿の概要であり, 今回の趣味開発(?)の原点発想となります. - -## nativeでの実装 - -僕の自作ブラウザでは, [iced](https://github.com/iced-rs/iced) という描画エンジンを利用しています. - -それありきで, 以下のような実装をしています (細かい実装は割愛しています). - -**textからそれがそのフォントでそのフォントサイズで描画されるとどれくらいの幅, 高さを取るか算出する処理** - -```rust -pub fn get_font_rendered_size(&self, width: f64, text: String) -> PaintFontRenderedRect { - let ctfont = self - .font - .native_font() - .clone_with_font_size(self.size as f64); - let font = ctfont.bounding_box(); - - // 細かい実装は割愛 - - PaintFontRenderedRect { - width: width, - height: height, - } -} -``` - -**RenderObject をもとに描画する処理** - -```rust -use iced_graphics::Primitive; - -fn create_block(render_object: RenderObject) -> Primitive { - Primitive::Quad { - ... - } -} - -fn create_text(render_object: RenderObject) -> Primitive { - Primitive::Text { - ... - } -} - -``` - -このように `RenderObject` をもとに, 矩形情報を計算しそれを元に `iced` の `Primitive` という単位に変換します. `create_block` では「この位置でこの大きさで, この背景色のブロック」というのを生成します. 同様に `create_text` では「この位置でこのフォントでこの文字」というのを生成します. - -これにより生成された `Primitive` を `iced` に食わせることによって実際にネイティブアプリとして描画することが実現されています. - -## Webでの実装 - -Web での実装では, これを Canvas API ベースのものに置き換えます. - -まず, `RenderTree` の構築処理までと Layout 処理の一部は, native で使われている実装と共通のものを使いまわせるので, それ以降の, - -* Layout処理におけるこの文をこのフォントで描画したときどれくらい幅, 高さをとるかの取得 -* 実際に描画する処理 - -をWebでも動くようにするために, Canvas APIによって実装します. - -* /core: RenderTreeの構築までと, 一部の句形情報算出のための処理 -* /native: nativeでの処理 -* /wasm: webでの処理 - -とpackageを分けて, native, wasm から core に依存する形で実装します. - -それありきで, Web で動かすための /wasm package では以下のような実装をしています. (細かい実装は割愛しています) - -**textからそれがそのフォントでそのフォントサイズで描画されるとどれくらいの幅, 高さを取るか算出する処理** - -```rust -pub fn get_font_rendered_size(&self, width: f64, text: String) -> PaintFontRenderedRect { - self.canvas_context.set_font(...); - let text_rect = canvas.measure_text(...).unwrap(); - let text_width = text_rect.width(); - let height = text_rect.actual_bounding_box_descent() + text_rect.actual_bounding_box_ascent(); - - // 割愛 - - PaintFontRenderedRect { - width: width, - height: height, - } -} -``` - -**RenderObject をもとに描画する処理** -```rust - -fn create_block(render_object: RenderObject, canvas_context: CanvasContext) -> Primitive { - canvas_context.set_fill_style(...); - canvas_context.fill_rect(...); -} - -fn create_text(render_object: RenderObject, canvas_context: CanvasContext) -> Primitive { - canvas.set_fill_style(...); - canvas.set_font(...); -} - -``` - -**web-sys** moduleから, Canvas APIにアクセスして, よしなに矩形情報の算出, 描画を行います. - -WASM から, このように HTML を入力にとり Canvas 上に描画するところまで実行することができました. やはり標準化されている仕様に則って当たり前のことを当たり前にすれば変な遊びもできてしまうので楽しいですね. - -## 終わりに - -本稿を通じて少しでも自作ブラウザ, 車輪の再発明って楽しそうだなと感じていただければ幸いです. また, 最近 OSS や卒論にかまけて開発が止まっていますが, 自作ブラウザ [Shinyaic](https://github.com/shinyaigeek/shinyaic) を見ていただいたり面白いと思ったなら star をつけてくださると励みになります! - -ブラウザの中でブラウザを動かせるようになったので, 次はブラウザの中でブラウザの中でブラウザを動かしたいと思います. diff --git a/packages/applications/turbo-blog/src/articles/public/composition-react-app-with-react-router.md b/packages/applications/turbo-blog/src/articles/public/composition-react-app-with-react-router.md deleted file mode 100644 index 967d8091..00000000 --- a/packages/applications/turbo-blog/src/articles/public/composition-react-app-with-react-router.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Reactアプリ小さめ構成with react-router 編 -tags: [Programming, JavaScript, React] -description: | - この記事は前回の記事の続きという感じです。これまた初学者向け - [脱 create-react-app、React アプリの小さめ構築](https://www.shinyaigeek.com/p/22) - - この記事を読めば create-react-app なしで react アプリを構築できる様になるのですが、その続きとしてこの記事では react-router について扱おうと思います(開発していて思いの外どぶったので) - - react-router のエラー、割とありますよね. - ていうか公式の API なり Document なりがよくわからないって感じはします。 - なんかよくわからないけど 404 エラーが出たり、CANNOT GET URL みたいなエラーが出たり、僕もこれでどぶって、いい感じの日本語記事が見つからなかったのもあってじゃあ紹介しておこうかなという感じです。 -publishedAt: 2019/08/12 -updatedAt: 2019/08/12 ---- - -## はじめに - -この記事は前回の記事の続きという感じです。これまた初学者向け -[脱 create-react-app、React アプリの小さめ構築](https://www.shinyaigeek.com/p/22) - -この記事を読めば create-react-app なしで react アプリを構築できる様になるのですが、その続きとしてこの記事では react-router について扱おうと思います(開発していて思いの外どぶったので) - -react-router のエラー、割とありますよね. -ていうか公式の API なり Document なりがよくわからないって感じはします。 -なんかよくわからないけど 404 エラーが出たり、CANNOT GET URL みたいなエラーが出たり、僕もこれでどぶって、いい感じの日本語記事が見つからなかったのもあってじゃあ紹介しておこうかなという感じです。 - -## react-router とは - -react-router とは react でルーティングを実現してくれるというやつです。 -じゃあルーティングとは何か、この URL を渡されたらこんなのを表示して!!って教えこむことです。 - -例えば'なんちゃらなんちゃら/login'っていう URL ではログイン画面を見せたいじゃないですか、'なんちゃらなんちゃら/home'っていう URL ではホーム画面を見せたいじゃないですか、これを実現するお!!ってやつです。 - -英語読める人はここ読むと詳しくわかると思います。 -[REACT TRAINING/REACT ROUTER](https://reacttraining.com/react-router/web/guides/quick-start) - -## 導入 - -まずモジュールをインストールしましょう。 - -```TypeScript -npm install react-router-dom -``` - -でそれをインポートします。 - -```TypeScript -import { BrowserRouter, Route, Link, Switch, Redirect} from 'react-router-dom'; -``` - -この辺がよく使うやつですね。 -BrowserRouter は react-router-dom の親分めいたやつと言いますか、BrowserRouter のなかで Route や Link を使って行くという感じです。 -似た様なのに HashRouter と MemoryRouter,StaticRouter があります。 -MemoryRouter に関してはデバッグ用と言いますか、テストやクライアントサイドでない環境で遊びたい時に使うやつです(ほぼ使わないので忘れていいと思います)。 -StaticRouter については React をサーバーサイドレンダリングしたいときに使うやつです。だから Static っていう形容詞がついています。 -対照的に BrowserRouter ですとブラウザ上でのルーティングができます。ただこれは history API を採用していますのでレガシーな環境では利用できません。逆に HashRouter ですと URL hash を利用していますので環境の制限はありません。ただそのおかげで location.key や location.state はカバーされていません。 -長々と喋りましたが面倒くさい時は脳死で BrowserRouter で構いません。 - -書き方としては - -```TypeScript - -function Home(){ - return( -
- ) -} - -function Login(){ - return( -
- ) -} - -function Test(){ - return( -
- ) -} -``` - -こんな感じでやれば取り敢えずの実装は出来ます。ただ色々と問題も生じます。 -例えば上の Route の path に引っかからない奴がでる(switch-case でいう default 的な)とき返す component を設定したい、あるいはそのときログイン画面へリダイレクトさせたい。 -あるいはこれをやったけど 404 エラーがでた、あるいは Cannot GET URL みたいなエラーがでたみたいなことがあると思います。以下でそれについて書いておこうかなと思います。 - -## Default を設定したい - -Route で引っ掛けるやつ以外の URL ではこのコンポーネントを表示させたい、あるいはリダイレクトさせたいってときのやつをここで紹介します。(要するにデフォルト設定) - -こんなときに役に立つのが Switch です。 - -以前のやつに加筆しますと - -```TypeScript -function Login(){ - 略 -} - -function Home() { - 略 -} - -function Default(){ - 略 -} - -function Test() { - return( -
- )
-}
-```
-これで/loginでも/homeでもないURLが渡されるとDefaultコンポーネントがレンダリングされます。
-でリダイレクトさせたいって時はRedirectを使います。
-この場合は上の
-```TypeScript
- \[1] Page lacks the HTML doctype, thus triggering quirks mode (https://web.dev/doctype/) 閲覧日: 2020/3/21 \[2] Fastify Docs Reply .raw (https://www.fastify.io/docs/latest/Reply/#raw) 閲覧日: 2020/3/21 \[3] node http ServerResponse write (https://nodejs.org/api/http.html#http_response_write_chunk_encoding_callback) 閲覧日: 2020/3/21 mountできるようになった, reconciliationの処理書く pic.twitter.com/7r8WqLaTiN 22卒のエンジニア志望の学生の交流のためのslackのワークスペース生やしたので22卒だよ!という人いれば招待するのでリプかDMかください🙇♂️(いきなりDMするのは憚られた) やっていき💪💪💪💪💪 #WebSpeedHackathon #WebSpeedHackathon 逃げ切りたいですが。。 pic.twitter.com/HXU4Z0nURy #WebSpeedHackathon #WebSpeedHackathon You might want to check the build output of your Webpack. If you see something like react_default.a.createElement(...). Note the extra .a. That might mean you're using `import React from "react"` which adds a bad getter in Webpack. Instead use `import * as React from "react"`. 個人戦のハッカソンや個人開発をADHDがやるのはやはり辛い(辛い)
-
-mountできるところまでは持っていったのですが, Reactがどのようにして状態を持っているかや, どうやって状態の初期化が複数回起きないようにしているかなど, 結局コード読んでも解読しきれずそこで止まってしまっています.
-
-VDOMの構造などは結構学べた気がしていて, そこは良かったです.
-
-これまたタイミングよくsaddnessOjisanがちょうどpreactを再実装したoreactを作っていたので, preactのコードリーティングを進めつつまた再チャレンジしたいと考えています. 宿題ですね.
-
-#### Next.js 非公式日本語翻訳プロジェクト
-
-https://github.com/Nextjs-ja-translation/Nextjs-ja-translation-docs
-
-もともと非公式のNext.jsの日本語翻訳サイト自体はあってOSSとして運用されていたのですが, ドキュメントの中身やデザインが古いもののまま更新が止まっていたので, 「更新せえへん?(意訳)」という旨のissueを作った結果作り直そうとなりました.
-
-当時よく話していた [かみむらさん](https://twitter.com/kamimura_th) にやってみませんかと相談してみたところ, 快諾していただき, そのあとNext.jsを作っているVercelの中のShu Uesugiさんにnext-siteをfolkして日本語翻訳していって良いか確認を取りスタートしました.
-
-僕は翻訳のレビューやCI,linterの整備, 移行作業やトップページの翻訳などを行っていました.
-
-最近Next.jsが大盛り上がりしているような印象を持っていますが, それに一役買えたのであれば幸いです.
-
-https://nextjs-ja-translation-docs.vercel.app/
-
-余談ですが, 本家のドキュメントサイトであるnext-siteのリポジトリは今見えない状況になっています.
-このリポジトリはNext.js confあたり, つまりNext.jsのv10が発表されたタイミングで見えなくなっていました.
-これは邪推ですが, i18n routingにNext.jsが対応したことを受けて, vercel側で「これが18nのベストプラクティスや!!」とドキュメントサイトを翻訳もするのではとは思っています.
-
-#### babel-plugin-lit-jsx
-
-https://github.com/Shinyaigeek/babel-plugin-lit-jsx
-
-これはJSXで書かれている, hooks(というよりReact)に依存しないFunctional Componentをlit-htmlで動くようにしてくれるbabel-pluginです.
-
-僕の技術ブログはJSXでコンポーネントを書いて, SSRして生成されたhtmlをCDNにキャッシュして, client-sideでhydrationはしないという構成になっています.
-これは僕の技術ブログの場合clientにおける状態変化は少なく, Reactを使うとしたらtemplate engineとしての利用がメインとなってしまいますが, そのためにReactをclient-sideで使うのはI/Oコストを無駄に増やすだけではないかという考えのもとフロントエンドではhydrationしないという実装にしました.
-
-ですがNext.jsなどにあるようなprefetch僕も欲しい!となり, htmlのbodyの部分をprefetchしてページ遷移のタイミングでinnerHTMLを置き換えるだとか, あらかじめリソースをfetchしておいてそれをブラウザにcacheさせるとか色々方法は思いついていたのですが, 最終的にviewに必要なJSONをprefetchして, それをclinet-sideのJSでレンダリングしようとなりました.
-
-レンダリングはlit-htmlで行おうとなったのですが, 正直型などの面で書き味がよろしくなく, やっぱり @types/react のJSXの型定義の恩恵は受けたいという話になり「でもhooksに依存しないFunctional Componentだったらlit-htmlに自動で置き換えられるんじゃね」という発想の元それを実現するためのbabel-pluginを作っていました.
-
-原理的には babel/traverse でASTをみてゴリゴリ変換しています.
-
-具体的にはこのようなjsxを
-
-```typescript
-import Header from "./Header";
-import Footer from "./Footer";
-import BlogPost from "./BlogPOst";
-
-const Layout = (props: { content: string }) => {
- return (
-
-
-僕が勢いで22卒交流slackを作ってみたらそこから一気に交流の輪が広がり交流も増え楽しかったです.
-
-オンラインで飲んだりもしていましたし, ましくんが主催してくれた22卒サマーインターン前にツヨツヨになっちゃおうLTなど, イベントも結構あってかなり楽しかったです.
-
-
-
-とある会社の人事さんと飲んでいた時に, 今年のエンジニア学生は大学とか地域を超えて仲良くなっている感じがあると仰っていて, おお〜〜〜〜ってなっていました.
-
-## やっていくこと
-
-### 就活
-
-はい, 考えないといけませんね.
-
-めちゃくちゃスローペースで進めています.
-とはいっても受ける会社とかはある程度決まっていてあとはやっていくだけという感じです. 就活終了できるタイミングが結構遅くなりそうでドキドキしています.
-ちゃんと満足のいく結果を出したいですね.
-
-### 技術ブログの改善
-
-これはやり残しちゃったタスクですね.
-さっき言及したbabel-plugin-lit-jsxを用いてprefetchを実装するとかもできていませんし, Algoriaを用いて全文検索を実装するとか, OGPを動的に生成するとか, Fieldデータを収集するとかやるべきこと/やりたいことがまだまだあります.
-これもちゃんとやってその上でやったことの詳細を技術ブログに書きたいですね.
-
-### OSS
-
-今年こそはもっとOSS活動をがっつりやっていきたいなというお気持ちです(多分毎年言ってる).
-誰かのブログでnode.jsのcode & learnが紹介されてたんですが, まだやってないかなぁ。。。
-
-### 卒業
-
-多分これが一番難しい.
-頑張ります
-
-### ブラウザ作り
-
-これは来年やりたいことというよりも, 次の春休みの自由研究の課題です.
-
-Webフロントエンドエンジニアを名乗っているのにブラウザのことを知り尽くしてはいないし作ったこともないことにちょっとした引っ掛かりを感じていて, それを解消しようという意図があります.
-
-春休みの自由研究のテーマを考えていた時にちょうど keiya sasaki さんがTLでブラウザを作っているのが目に入った, 12月24日(今日ですね!!)発売のWeb + DB Pressに自作ブラウザ特集がある, 『[Go言語でつくるインタプリタ](https://www.amazon.co.jp/Go%E8%A8%80%E8%AA%9E%E3%81%A7%E3%81%A4%E3%81%8F%E3%82%8B%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF-Thorsten-Ball/dp/4873118220)』をちょうど勧められていた, など諸々タイミングがよくて運命を感じブラウザ作りを春休みの自由研究のテーマにしました.
-
-## 終わりに
-
-ノリで書き始めましたが, 意外と書く内容が多くてびっくりしました. 充実した一年間だったのかもしれません.
-
-今年の一年を一言で表すと「深化」の一年でした, 去年なあなあで理解していた部分など, 細かく突き詰めて理解できそれを元にわかる領域の問題に対して自分なりの意見考察をもって考えられるようになったような気がします.
-
-こういう話をするということは来年は何の年にしたいかという話をするということなのですが, 来年何の年にしたいかということよりも, 2年後何の年にしたいかということの方が明確に決まっているためそこから逆算した目標を来年何の年にしたいかとして掲げたいと思います.
-
-僕はUX, DX周りを改善していくことが大好きなのですが, ここら辺はトレードオフや人的リソース, 開発者の意識など様々な問題が絡み合う多目的問題だと考えています. こうした開発現場における多目的問題の全体最適化を目指していきたいのですが, そのためには「こうすればこうなる」だけではなく, 「こうすればこうなるはずだけどそれによってどれくらい改善されたのか」まで, 仮説に対して検証を行いそれを元に次の意思決定を下して...ということが求められると考えています.. こうしたことは実際に企業に入って動かないと実践できない(特に僕は大学関係で何らかの組織に属しているといったこともないので...)ことだと思っているので, これを2年後の目標に掲げています. つまり2年後は「進化」の年にしたいです.
-
-2年後は「進化」の年にしたいんですが, そこから逆算して来年は「レベリング」の年にしたいです(「深化」, 「進化」といい感じに踏みたかったけどいいのが思いつかなかった...)
-僕はまだまだWebについて理解できないことがたくさんあると思っていて, Web Developerとして深さも広さも足りていないと感じています. (深さで言えばブラウザそのものへの理解など, 広さで言えばUIデザイン, サーバーサイドなど...)
-これらの足りてないところを補い2年後の「進化」のための土台づくりとなる, 「レベリング」をしていきたいなと考えています.
-
-来年もこう思えるような一年間にしたいですね, やっていきましょう!!!!!良いお年を!!!!!!!
\ No newline at end of file
diff --git a/packages/applications/turbo-blog/src/articles/public/log-ca-web-speed-hackathon.md b/packages/applications/turbo-blog/src/articles/public/log-ca-web-speed-hackathon.md
deleted file mode 100644
index 1063260c..00000000
--- a/packages/applications/turbo-blog/src/articles/public/log-ca-web-speed-hackathon.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: CyberAgent主催『Web Speed Hackathon Online』参加ログ
-tags: [Web,Programming]
-description: |
- Cyber Agent主催のWeb Speed Hackathon Online 4/25, 4/26に参加してきました. 結果は残念ながらレギュレーション違反で選外でしたが, とても楽しく刺激を得られたイベントになりました.
-
- この混乱した情勢の中オンラインという形でシステムを整えて実施してくださったCyber Agentの皆さん, ありがとうございました.
-publishedAt: 2020/04/26
-updatedAt: 2020/04/26
----
-
-## はじめに
-
-Cyber Agent主催のWeb Speed Hackathon Online 4/25, 4/26に参加してきました. 結果は残念ながらレギュレーション違反で選外でしたが, とても楽しく刺激を得られたイベントになりました.
-
-![hackathon-res](/assets/log-ca-web-speed-hackathon/hackathon-res.png)
-
-この混乱した情勢の中オンラインという形でシステムを整えて実施してくださったCyber Agentの皆さん, ありがとうございました.
-
-## イベント内容
-あらかじめ用意されている, 架空のブログサービスのパフォーマンスをどれだけ高められるかというものです.
-ランタイムのパフォーマンスの最適化ももちろん必要でしたが, チューニング対象がメディアという特性上やはりI/Oコストをどれだけ抑えられるかが大きな鍵で, フロントエンドだけでなくインフラ, バックエンドも触れるところがありました.
-
-得点づけはlight houseにより計測される得点や, TTI, Speed Index等に重み付けを行なってホニャホニャするそうです.
-
-レギュレーションは**Google Chrome で機能落ちやデザイン差異が生じない**ことです.
-具体的には画像のアスペクト比等が崩れない, いいね機能などが落ちない等で結構厳し目だった印象があります(あと個人で進めていたこともあって気付きにくかった)
-
-僕のレギュ違反はmoment, lodash, jQueryを剥がした時に機能落ちが生じたか, 画像のresizeを行なった時にアスペクト比がずれたかかなと。。悔しい。。
-
-## 経緯
-
-スタート時
-
-
-1日目終了
-
-
-
-
-調子乗ってる時
-
現状3位。。。まだまだ詰められる要素あるしやっていくぞ💪
-
-終わった直後(審査中)
-
-
-死んだあと
-
お疲れ様でした!!あとは神に祈ります。。
-
-## やった施策
-
-雑に箇条書きです. 効果が顕著だったものは**太字**にします
-よろしければ他の参加者の皆さんもどんなことをやったか教えて欲しいです🤲
-
-* webpackのbuild最適化
- * **source map剥がす**
- * **modeをnone -> productionにする** ([https://webpack.js.org/configuration/mode/](https://webpack.js.org/configuration/mode/))
-* code splitting
- Reactに頼りました. Router levelでchunkしてさらにcomponentレベルでもいくつかchunkしました. fetch, contextの更新のためのscriptも切り出そうと思いましたが, webpackをゴリゴリ考える必要が出てきてしんどくなって諦めました
- * **Lazy, Suspense** ([https://ja.reactjs.org/docs/code-splitting.html](https://ja.reactjs.org/docs/code-splitting.html))
- ちなみにですが, 遅延読み込みをする時, **main.bundle.js**から相対パスで必要なjsを読み込むっぽくて, それはサーバーのどこにmain.jsがあるかでなくそのスクリプトが評価された時点のパスから相対的にパスが決定されるっぽくて, 例えばReact routerとかを使っているとダイレクトに **/asdf/hogehoge/barbar/celcel/**みたいなところにアクセスするとchunkされているjsが迷子になってエラーが出ます. これをなんとかするために, サーバー上で, jsへのRequestのうち迷子になりそうなものは, catchしてよしなに返すというものを実装しました.多分webpackでこういうのをいい感じに解決するものがありそうでしたけど, 見つからなかった。。 ちなみにhtmlファイルの配信にも似たようなことをしなければならないです.
-* 画像の最適化
- * 用いられている画像のresize, webp化(画像があるリポジトリからcloneしてcloud storageにアップロードしました) -> ここでやらかした可能性ありますね。。
- * **webpackによりbase64にencodeされて埋め込まれているものもあったのを, encodeさせずに普通にpathで画像を指定する.**
-* 一部ライブラリの削除
- * jQuery, moment, lodashを剥がしました -> ここでやらかした可能性もありますね。。
- * [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer)で剥がすべきライブラリを洗い出しました
- ![webpack-bundle-analyzer](/assets/log-ca-web-speed-hackathon/webpack-bundle-analyzer.png)
- * immutable.jsとbluebird.jsについては辛そうだったので諦めました。。
-* html, cssのminify
- * htmlはHtmlWebpackPluginに任せました
- * cssはpost-cssに任せました
-* google fontの最適化
- google fontsはquery paramaterでこの文字のフォントだけ欲しい!という指定ができます, それをやりました [https://developers.google.com/fonts/docs/getting_started](https://developers.google.com/fonts/docs/getting_started)
-* fontawesomeの読み込みを最小限にする
-* service workerでfetch時にキャッシュ
-* 配信されるコンテンツにとても強いCacheを効かせる
-* react importの最適化
- import React fromよりもimport * as React fromの方が余計なプロパティアクセスが生じなくてちょっと早くなるらしいです, まじで?(未検証)
-
レギュレーション違反やってしまっていた。。めっちゃ悔しい。。お疲れ様でした。。! pic.twitter.com/zV40X344Jw
-* 配信時に圧縮をかける
- expressでcompressionするあれです
-* 画像の遅延読み込み
- [https://developers.google.com/web/updates/2016/04/intersectionobserver](https://developers.google.com/web/updates/2016/04/intersectionobserver), [https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video?hl=ja](https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video?hl=ja), [https://blog.jxck.io/entries/2019-05-20/lazyloading.html](https://blog.jxck.io/entries/2019-05-20/lazyloading.html)この辺
- 実装は時間がなかったので良さそうなReact Componentを採用しました [https://www.npmjs.com/package/react-lazy-load-image-component](https://www.npmjs.com/package/react-lazy-load-image-component)
-
-## やれなかったこと
-* SSR
- そもそもメディアだったらSSRしたくない?ってなって1時間ほど作業しましたが, React-routerやreact-reduxといったfor clientのライブラリが多く, シンプルにserver上でレンダリングまでが既にしんどい, client, server間でcontextやstate, routerの共有が沼いという理由で諦めました
-* ブログの記事をfetchを並列でRequestを投げる
-
-```javascript
-useEffect(() => {
- await fetchASDF()
- await fetchHOGE()
- await fetchBAR()
-},[])
-```
-となっていて, これだとfetchASDFが終わったらfetchHOGEのRequestを投げてそのResponseが返ってきたらfetchBarを投げてという感じでブロッキングになっちゃって辛いので
-```javascript
-Promise.all([fetchAsdf(), fetchHOGE(), fetchBAR()])
-```
-
-という感じにしてRequestをまとめて投げてもらうようにして, こうすれば多分fetchにかかる時間が短くなってTTI減らせるんじゃないかのと思っていたのですが, なぜかTTIが大幅に落ち込んだので辞めました。。。何故だ。。知見求むです。。
-
-## 結局
-
-
-
-パフォーマンスチューニングをする時, (パフォーマンスでなくとも何らかのチューニングを行う時), ただパフォーマンスについてだけ数字をとって考えればいいというわけではなく, デザイン差分や機能差分についても目を配りそれらに落ちがないようにする必要がもちろんあるんですが, その際**僕のような注意力散漫な人間であっても, そして別に特段注意を払わなくとも**差異が発生した時は気づけるようなシステムを作っていくべきだと感じました. せっかくPlaywright, puppeteer, GitHub Actionsといった便利なツールがあるし, エンジニアを志望する以上こういう仕組みづくりをして行くべきで, 逆に普段のプロダクトでこういったことを怠っていた | Review任せにしていたというのが今回のレギュレーション違反に繋がったかなと反省があります.
-
-最後に主催してくれたCyber Agent, 競い合った参加者の皆さんに感謝を述べて終わりたいと思います.ありがとうございました!!
-
-(次は優勝したいのでまたやってください)
-
\ No newline at end of file
diff --git a/packages/applications/turbo-blog/src/articles/public/m17n-with-cloudflare-workers.md b/packages/applications/turbo-blog/src/articles/public/m17n-with-cloudflare-workers.md
deleted file mode 100644
index e25539eb..00000000
--- a/packages/applications/turbo-blog/src/articles/public/m17n-with-cloudflare-workers.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: cloudflare workers で多言語対応を行う
-tags: [Programming,CDN,CloudFlare]
-description: 弊ブログで多言語対応を行なった。その際 cloudflare workers を利用したが体験が良かったのでメモとして残しておく。
-publishedAt: 2022/02/19
-updatedAt: 2022/02/19
----
-
-こんにちは、しにゃいです。卒業論文を無事倒し入社まで暇になり、暇つぶしに気になってる OSS にPRを投げていたところ、そのメンテナやPRで会話した人から Twitter でDMが飛んでくる機会が増え、また cloudflare のアナリティクスを見ても最近如実に国外からのアクセスが増えていました。クローラーbotの存在を考えても明らかに数が増加していたためこれなら弊ブログ(shinyaigeek.dev)も多言語対応を進めた方がいいんだろうな、という気持ちになり多言語対応を進めました。要件の中にあった, HTTP Request Header の "accept-language" を見てよしなにコンテンツを振り分ける, という処理に cloudflare workers を利用したのですが、30分程度いじいじしたらいい感じにできて体験が良かったので備忘録程度に書いておこうと思い本記事の執筆を始めました。
-
-## ブログの構成
-
-まず弊ブログの構成から述べていきます。弊ブログはコンポーネントを JSX で記述し、記事自体は markdown で書いています。それをオレオレ静的サイトビルダーでHTMLとしてVPSに立てたh2oサーバーから配信しています。ブログにそこまでの機能は求めておらず、ブログの場合はページ遷移も少ないだろうという想定から hydration は行わず、React 抜きのWebページになっています。一部動的に JavaScript を使っている部分がありますが、そこは customElements でカプセル化しています。
-
-ひとまず対応する言語はデフォルトの日本語と、英語として、ビルドするときに英語用のHTML、日本語用のHTMLの二種類を吐き出すようにしました。JSも使っていないため完全にURLベースで英語用のページ、日本語用のページを振り分けるようにしています。サブドメインとして "en.shinyaigeek.dev" と "ja.shinyaigeek.dev" を用意し、前者からは英語用のページ、後者からは日本語用のページを配信するようにしています。また "shinyaigeek.dev"、"www.shinyaigeek.dev" からは日本語用のページを配信するようにしています。
-
-## 技術選定
-
-まずHTTP Request を見て "accept-language" によってよしなにHTMLを振り分けるかよしなにリダイレクトさせるか、という選択肢がありました。よしなにHTMLを振り分ける方式だとshared cache周りが面倒になる、また、振り分けも cloudflare worker でURL Rewritesを行えばその心配は無くなりますが、静的なWebページとして運用している以上あるURLを叩くと同じResponseが返される、というようにしたかったのでこの方針は取らずによしなにリダイレクトさせるようにしました。HTTP Requestを送信してきたクライアントにリダイレクトしてもらうためにはもちろん301 HTTP Responseを返却する必要があります。それをOrigin Serverから返却する、といったことももちろん可能なのですが現状Origin Serverは日本にしかなく、"accept-language" で英語になるようなユーザー、すなわちこの対応で掬い上げたいクライアントは多くが日本国外からHTTP Requestを飛ばしてくると想定すると、地理的な要因で生じ得る遅延をなくしたく、cloudflare workers を用いてネットワークエッジで捌いてしまおう、となりました。
-
-## やり方
-
-至極単純です。 "accept-language" をパースしてよしなにより好まれる言語を決定する君はnpmにいくつか出ていますので、最も適格なものをインストールして、振り分けるだけです。
-
-- [accept-language](https://www.npmjs.com/package/accept-language)
-- [accept-language-parser](https://www.npmjs.com/package/accept-language-parser)
-- [resolve-accept-language](https://www.npmjs.com/package/resolve-accept-language)
-
-
-注意点としては、
-- HTML 以外への HTTP Request については特に何もしない
- - 今回はRequestのURLが `.html` で終わるか, `/` で終わる時をターゲットとしました
-- 無限ループに注意する
- - en 向けのページにリダイレクトしてそれに応じてそのクライアントからHTTP Requestが飛んできてそれによってまた以下のような cloudflare workers が発火してまた en 向けのページにリダイレクトして...という無限ループは生じ得ます
- - 本ブログでは en 向けのページ、ja向けのページはそれぞれ別ドメインにしてあり、そのドメインへの HTTP Request にはそもそも cloudflare workers が発火しないようになっています。これは上記の無限ループ対策でもありますが、こうしたURLにアクセスしてくる人は accept-language 関係なくその言語で読みたいであろう、という意図もあります。
- - 例えばサブドメインではなく pathname に `/en/` といったprefixをつけて対応している人は注意が必要になるでしょう。
-
-以下に簡単なコードを載せておきます。
-
-### コード
-
-```typescript
-import resolveAcceptLanguage from 'resolve-accept-language'
-
-const handler = function (event: FetchEvent) {
- // HTTP Request からURLを取得
- const { url } = event.request
- // URLから pathname とクエリを取得
- const { pathname, search } = new URL(url)
-
- // HTMLに対してのHTTP Requestではない時は特に何もしない
- if (!pathname.endsWith('.html') && !pathname.endsWith('/')) {
- return fetch(event.request)
- }
-
- // HTTP Request Headerからaccept-languageを取得
- const acceptLanguage = event.request.headers.get('accept-language')
- if (!acceptLanguage) {
- return fetch(event.request)
- }
- // 言語を決定する
- const preferredLanguage = resolveAcceptLanguage(
- acceptLanguage,
- ['en-US', 'ja-JP'],
- 'ja-JP',
- )
-
- // 英語が好ましいとなったときは "en.shinyaigeek.dev" にリダイレクトする
- if (preferedLanguage === 'en-US') {
- return Response.redirect(
- `https://en.shinyaigeek.dev${pathname}${search}`,
- 301,
- )
- }
-
- return fetch(event.request)
-}
-
-addEventListener('fetch', (event) => {
- event.respondWith(handler(event))
-})
-```
-
-## まとめ
-
-一才のフレームワークを使わずにブログを作っているので、こうした多言語対応も自分で考えてあれこれしなければいけないですが、修行になって楽しいですね。また最近は cloudflare workers や Compute@Edge など、フロントエンドエンジニアがサクッと reverse proxy 的なことをしかも馴染みあるJSで制御できるようになっていていい時代です。また一切フレームワークを使わずに力技で対応しているので、実はこういうこともした方がいいよ、これはこうした方がいい、などあれば教えていただけると幸いです。
diff --git a/packages/applications/turbo-blog/src/articles/public/nice-to-meet-you.md b/packages/applications/turbo-blog/src/articles/public/nice-to-meet-you.md
deleted file mode 100644
index 6a234b46..00000000
--- a/packages/applications/turbo-blog/src/articles/public/nice-to-meet-you.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: 初めまして
-tags: [Blog,Poem]
-description: |
- 初めまして、しにゃいこと、林仁と言います。 ブログ始めてみました。 なんでアメブロやはてなブログなど既存のブログサービスを使わずにこんなダサくめんどくさそうなことをしたかというと単純に面白いかなと今日の朝思っちゃいまして
-publishedAt: 2018/10/21
-updatedAt: 2018/10/21
----
-
-初めまして、しにゃいこと、林仁と言います。 ブログ始めてみました。 なんでアメブロやはてなブログなど既存のブログサービスを使わずにこんなダサくめんどくさそうなことをしたかというと単純に面白いかなと今日の朝思っちゃいまして
-
-とりあえず自己紹介でも。 東京大学文科3類 1 年林仁です。趣味はダーツと水泳、読書、アニメ。いわゆるくそ陰キャです。 最近趣味でプログラミングを齧ってる候、その一環として、とりあえず自分で何かページを成形したいなと今日の朝思い至ってこうなります。 さっきまで友達と遊んでてクソ疲れた状態で深夜からこの作業始めたんでクッソ適当です、いいね機能もなければコメント機能もない、実はこのヘッダーのロゴは僕が 20 分くらいで適当に書いた何か、まじでクソやる気ないブログですけどちょっとずつ時間を縫って改良していきます。 今仕事の関係で HTML を弄ることが多いのでこれくらいはサクッとやりたいなと思います(唐突なイキリ) タイトルにもなっているように僕の将来の夢は今んとこ技術やさんなんすよね。理由はかっこいいからです。 まあ実は技術やさんというよりコンピューターサイエンスに携わりたいという欲望もありますけど まあとりあえずこのブログをあろうことか読んで時間をドブに捨ててしまったエンジニアやコンピューターサイエンスに携わっているよ!という方、とにかくイキってください、めっちゃアドバイスとか欲しいです。 下にコメント機能がわりに Twitter と Insta のアカウント貼っとくんでまぁじでお願いします。。。 あとなんか依頼があれば多分言い値でやります。 とりあえずもう眠いんで成形だとかは今度また気が向いたらします。 とりあえず今のうちにやるべきこと、やったことをまとめておくと次僕が気まぐれでこのサイトを開いたときのためにまとめておきやす。 ☆ やったこと ・ヘッダー作成(適当) ・初めましてを書く ・よくわからないロゴ作成 ・GoogleAnalytics 導入 ☆ やるべきこと (上から) ・コメント機能 ・デザイニング ・サイドメニュー ・いいね機能 ・文章書く ・楽になるような CGI 作成 こんな感じですかね、駄文でしたがここまで読んでくれた方ありがとうございました。多分3日後くらいに更新します。
\ No newline at end of file
diff --git a/packages/applications/turbo-blog/src/articles/public/pnpm-outdated-command-supports-json-format.md b/packages/applications/turbo-blog/src/articles/public/pnpm-outdated-command-supports-json-format.md
deleted file mode 100644
index 2e6a577b..00000000
--- a/packages/applications/turbo-blog/src/articles/public/pnpm-outdated-command-supports-json-format.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-title: pnpm outdated コマンドが JSON format をサポートした
-tags: [Blog,JavaScript,TypeScript,OSS]
-description: pnpm で古くなったパッケージを検知する outdated コマンドで, JSON 形式での出力をサポートしました.
-publishedAt: 2022/11/06
-updatedAt: 2018/11/06
----
-
-## TL;DR
-
-- pnpm outdated コマンドが JSON 形式の出力をサポートした
-- これでプロジェクト中の依存パッケージの自動アップデートなどがやりやすくなる
-- 実装を担当していたので, 実装や変化, ユースケースをブログに示す
-
-
-## pnpm とは
-
-[https://pnpm.io/](https://pnpm.io/)
-
-pnpm とは Node.js 環境におけるパッケージマネージャーの一つです. パッケージマネージャーとして, 他のツールだと npm や yarn が挙げられます.
-
-pnpm は symlink を用いて, npm モジュールの高速で省容量なダウンロードを提供しています. 通常あるプロジェクトで npm モジュールをインストールすると, `node_modules` 以下にそれらのモジュール, とさらにネストされた依存モジュール群が全て展開されます. pnpm はプロジェクトを跨いで, それらのモジュールを単一のディスク領域へと保存し, プロジェクト配下にはそれへのハードリンクが展開されるようになります. また, 異なるバージョンのモジュールに依存している際, それら一つ一つを丸々 install するのではなく, それらのモジュールごとの更新の差分のみを保存します. これらの方法により省容量で高速なモジュールのインストールを実現しています.
-
-また, pnpm の特徴として大胆に他のパッケージマネージャーにはない utility コマンドやオプションを追加して行っている, といったことも挙げられます.
-
-[![tweet i have joined pnpm](../../../assets/pnpm-outdated-command-supports-json-format/tweet.png)](https://twitter.com/Shinyaigeek/status/1577947254916550656)
-
-pnpm のメンバーとして, `pnpm outdated` コマンドに JSON 形式での出力機能を実装したので, それについてブログに書き起こそうと思います.
-
-## pnpm outdated コマンドについて
-
-`pnpm outdated` コマンドは, プロジェクト中の依存モジュールのうち, deprecate されていたり新しいバージョンが publish されているなどで, 古くなったモジュールを洗い出すためのコマンドです.
-
-例えばこのブログで `pnpm outdated` を実行すると以下のような出力が得られます.
-
-![pnpm outdated を実行した結果](../../../assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png)
-
-また list 形式での出力もサポートしており, `pnpm outdated --table false` と実行すると以下のような出力が得られます.
-
-![pnpm outdated --table false を実行した結果](../../../assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png)
-
-## pnpm outdated コマンドに JSON 形式の出力をサポートしたかったモチベーション
-
-モチベーションとしては, 上記のような table 形式, list 形式での出力だとパッケージのアップデートを自動化したい, となったときにそれら形式はヒューマンフレンドリーに偏っており, 逆に自動化しにくい, といった背景がありました.
-自動化しやすいように, 出力フォーマットとして JSON 形式をサポートすることになりました.
-
-## format オプションについて
-
-JSON 形式の出力のサポートのために, `--format` が追加されました. 一方これは `--table {boolean}` と責務が微妙に被ってしまいます. また `--table` は boolean 値を取るため, 命名的にも機能的にも `--table` で JSON 形式での出力を指定できるようにすべきではありません. また責務も被るため, その解消として `--format {table | list | json}` と取れるようにし, `--table` は削除されました. ([実装](https://github.com/pnpm/pnpm/blob/main/packages/plugin-commands-outdated/src/outdated.ts#L43)
-
-## JSON 形式の出力例
-
-`pnpm outdated --format json` を実行します.
-
-```json
-{
- "uglify-es": {
- "current": "3.3.9",
- "latest": "3.3.9",
- "wanted": "3.3.9",
- "isDeprecated": true,
- "dependencyType": "dependencies"
- },
- "highlight.js": {
- "current": "11.3.1",
- "latest": "11.6.0",
- "wanted": "11.3.1",
- "isDeprecated": false,
- "dependencyType": "dependencies"
- },
- "@types/highlight.js": {
- "current": "9.12.4",
- "latest": "10.1.0",
- "wanted": "9.12.4",
- "isDeprecated": true,
- "dependencyType": "devDependencies"
- },
- ...
-```
-
-自動化しやすそうでハッピーですね. 2022/11/06 時点ではまだリリースされていませんが, 次の minor release で出ると思うので待ち遠しいです.
\ No newline at end of file
diff --git a/packages/applications/turbo-blog/src/articles/public/remake-blog-with-nextjs-nowsh.md b/packages/applications/turbo-blog/src/articles/public/remake-blog-with-nextjs-nowsh.md
deleted file mode 100644
index 867a8ecb..00000000
--- a/packages/applications/turbo-blog/src/articles/public/remake-blog-with-nextjs-nowsh.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-title: Next.jsとnow.shでブログを新しく作り替えた
-tags: [Blog,Programming, JavaScript,React]
-description: |
- [Next.js 9](https://nextjs.org/blog/next-9)
- 7月8日Next.jsのv9リリースが発表されました。
-
- 実はこのブログの前身もNext.jsで書かれていて書いた当時はまだv8でした。でv9リリースからおよそ5ヶ月が経ってやっと、重い腰を上げて自分のブログのアップデートを試みました。
- ですが蓋を開けるとあら不思議、あまりの~~クソ~~コードぷりになかなか作業が進まない。
- 具体的に言ってしまうと@ts-ignoreとanyのオンパレードで下手したらJSのまま作業するよりも酷い代物が出来上がっていました。
- そんなものをアップデートしようとしても全然コンパイルが通らず、しかもバカ遅い。
- ちなみにこれが書き換える前のlighthouseのスコア、無慈悲な0点に涙を禁じ得ません。
- そしてもう何もかもが無理になり一から作り直してしまうことにしました()
-publishedAt: 2019/12/14
-updatedAt: 2019/12/14
----
-
-asdfasdfasdfasdf## 作り替えに至った経緯
-
-[Next.js 9](https://nextjs.org/blog/next-9)
-7月8日Next.jsのv9リリースが発表されました。
-
-実はこのブログの前身もNext.jsで書かれていて書いた当時はまだv8でした。でv9リリースからおよそ5ヶ月が経ってやっと、重い腰を上げて自分のブログのアップデートを試みました。
-ですが蓋を開けるとあら不思議、あまりの~~クソ~~コードぷりになかなか作業が進まない。
-具体的に言ってしまうと@ts-ignoreとanyのオンパレードで下手したらJSのまま作業するよりも酷い代物が出来上がっていました。
-そんなものをアップデートしようとしても全然コンパイルが通らず、しかもバカ遅い。
-![27-1](/assets/remake-blog-with-nextjs-nowsh/27-1.jpeg)
-ちなみにこれが書き換える前のlighthouseのスコア、無慈悲な0点に涙を禁じ得ません。
-そしてもう何もかもが無理になり一から作り直してしまうことにしました()
-
-## やったこと
-ここからだらだらと箇条書きになります。
-
-* SSRした
-
-実は以前のブログはstatic file exportしたものを一々FTPしてました(ぇ
-Next.jsのSSR (with rehydration) はTTFBがちょっと辛いというのはありましたが、以前のぐっちゃぐちゃになっていたものに比べるとかなり早くなりました。
-(~~それでもまだ速さが物足りないしブログにSSRはミスマッチな気がするからGatsbyに乗り換えたい~~)
-
-* ダークモードに対応した
-
-スマホやブラウザのダークモード、ライトモードそれぞれによって微妙に異なる配色を採用するようにしています。
-cssのprefers-color-schemeというメディアクエリで対応できたので、そこでcss変数作ってよしなにやりました。
-prefers-*はユーザーの閲覧環境に関するメディアクエリで、まだ実装はされてない(はず)ですけど今後はアニメーションの動きを減らすか否か、コントラストが高いか低いかというのにも対応できるようになるっぽい?
-
-* 画像の遅延読み込み
-
-ブログのコンテンツ一覧のページのアイキャッチ?画像の読み込みがボトルネックになっていたので、低解像度のデフォルトとなる画像をあらかじめ読み込んで表示させておき、Intersection Observer APIというターゲットとなる要素について、それが指定された要素あるいはビューポートと*交差*するたびに呼ばれるコールバック関数を定められるAPIを用いています。
-僕はuseEffect(componentDidMound)の中で、windowのloadイベントでIntersectionObserverを定め〜って感じの実装にしました。
-これにより、ファーストビューではブログのアイキャッチ画像は低解像度のものが表示され、帯域の節約になりもちろんロード時間も減ります。そして下にスクロールしてそれが表示される!!ってなると(ビューポートと交差すると)新たに普通の解像度のその記事のアイキャッチ画像が読み込まれ差し込まれるという具合です。
-僕の場合これがかなり速度に貢献した。
-
-* webフォントとの別れ
-
-Unicode-rangeで帯域減らしたといえど4.7MBは辛かった、以上
-
-* animationをkeyframesで表現
-
-以前は[Ant Motion](https://motion.ant.design/components/tween-one)のtween oneというライブラリを用いてアニメーションを表現していたけれど、僕のCSS習熟度が上がりこれ別にkeyframesで表現できるくねってなった、あとはやるだけ。
-ちなみにトップページの惑星の公転周期っぽいアニメーションは
-
-```JSX
-