diff --git a/.github/ISSUE_TEMPLATE/translation.md b/.github/ISSUE_TEMPLATE/translation.md deleted file mode 100644 index b3e9d0be..00000000 --- a/.github/ISSUE_TEMPLATE/translation.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: 文章翻译 -about: 外文优秀技术、开源文章翻译 -title: (译文中文标题) -labels: - - Article - - Translation ---- - -@FreeCodeCamp-Chengdu 我添加了一篇想翻译的新文章: - -https://example.com/replace/this/with/your/original/article/URL \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/translation.yml b/.github/ISSUE_TEMPLATE/translation.yml new file mode 100644 index 00000000..c542e94e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/translation.yml @@ -0,0 +1,24 @@ +name: 文章翻译 +description: 外文优秀技术、开源文章翻译 +title: (译文中文标题) +labels: + - Article + - Translation +body: + - type: input + id: page_link + attributes: + label: 文章网址 + description: 一个 issue 只能填一个 + validations: + required: true + - type: textarea + attributes: + label: 翻译须知 + description: 如有其它需要注意的事项,请注明以帮助译者。 + value: '@FreeCodeCamp-Chengdu/team-1' + - type: markdown + attributes: + value: >- + This template was generated with [Issue Forms + Creator](https://issue-forms-creator.netlify.app) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3c6911f8..57c1198b 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1 +1 @@ -@FreeCodeCamp-Chengdu I create a Pull Request to close #issue_number +@FreeCodeCamp-Chengdu/team-1 I create a Pull Request to close #issue_number diff --git a/.github/workflows/fetch-Web.yml b/.github/workflows/fetch-Web.yml index e4f63233..445ee4b2 100644 --- a/.github/workflows/fetch-Web.yml +++ b/.github/workflows/fetch-Web.yml @@ -13,17 +13,34 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: freeCodeCamp-China/article-webpage-to-markdown-action@v1 + - id: issue-parser + uses: stefanbuck/github-issue-parser@v3 with: - newsLink: "${{ github.event.issue.Body }}" - markDownFilePath: "./_drafts/Article/Translation/" + template-path: ".github/ISSUE_TEMPLATE/translation.yml" + + - id: fetch-md + uses: freeCodeCamp-China/article-webpage-to-markdown-action@v2 + with: + pageURL: "${{ steps.issue-parser.outputs.issueparser_page_link }}" + markdownFolder: "./_drafts/Article/Translation/" githubToken: ${{ github.token }} + - name: 将输出发至评论区 + run: gh issue comment "$NUMBER" --body "$BODY" + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.issue.number }} + BODY: | + - 原文网址: [${{ steps.fetch-md.outputs.title }}](${{ steps.fetch-md.outputs.original_url }}) + - 原文作者: [${{ steps.fetch-md.outputs.author || 'anonymous' }}](${{ steps.fetch-md.outputs.author_url }}) + - Markdown 文件: [点击编辑](${{ steps.fetch-md.outputs.editor_url }}) + - uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "${{ github.event.issue.title }}" - - name: Lark notification + - name: 飞书通知 uses: foxundermoon/feishu-action@v2 with: url: ${{ secrets.LARK_CHATBOT_HOOK_URL }} diff --git a/_drafts/Article/Translation/declarative-shadow-dom?hl=en.md b/_drafts/Article/Translation/declarative-shadow-dom.md similarity index 100% rename from _drafts/Article/Translation/declarative-shadow-dom?hl=en.md rename to _drafts/Article/Translation/declarative-shadow-dom.md diff --git a/_posts/Article/Translation/Recent-Docker-BuildKit-Features.md b/_posts/Article/Translation/Recent-Docker-BuildKit-Features.md index 30357aba..c9c63a25 100644 --- a/_posts/Article/Translation/Recent-Docker-BuildKit-Features.md +++ b/_posts/Article/Translation/Recent-Docker-BuildKit-Features.md @@ -1,14 +1,19 @@ --- -title: Recent Docker BuildKit Features You're Missing Out On +title: 你正在错过的最新 Docker BuildKit 功能 date: 2024-05-13T00:00:00.000Z -authorURL: "" -originalURL: https://martinheinz.dev/blog/111 -translator: "" -reviewer: "" +authors: + - luojiyin1987 +original: https://martinheinz.dev/blog/111 +categories: + - Article + - Translation +toc: true --- 随着 BuildKit 的引入,Docker 的构建后端得到了显著改进,并增添了许多强大的新功能。然而,很多用户并不了解这些新功能。因此,本文将向你介绍那些你绝对应该了解并开始使用的 BuildKit 功能,助你更好地利用 Docker。 + + ## Debugging(调试) 让我们从最常见的任务 - **调试** 开始。一直以来,调试 `docker build` 都是一件痛苦的事情。当 `RUN` 或 `COPY` 命令失败时,你很难查看上下文并调试问题所在,通常只能求助于添加 `RUN ls -la` 等命令来获取更多信息。 diff --git a/_posts/Article/Translation/building-container-layers-from-scratch.md b/_posts/Article/Translation/building-container-layers-from-scratch.md index b7477a36..606d3dd3 100644 --- a/_posts/Article/Translation/building-container-layers-from-scratch.md +++ b/_posts/Article/Translation/building-container-layers-from-scratch.md @@ -1,15 +1,17 @@ --- -title: "从零开始构建容器:层" +title: 从零开始构建容器:层 date: 2024-06-07T03:14:58.423Z -authorURL: "" -originalURL: https://depot.dev/blog/building-container-layers-from-scratch -translator: "" -reviewer: "" +authors: + - luojiyin1987 +original: https://depot.dev/blog/building-container-layers-from-scratch +categories: + - Article + - Translation +toc: true --- 在 Depot,我们专注于为容器镜像提供最快的构建服务。我们主要通过以下方式实现这一目标: - 1. 提供对强大计算和存储的即时访问。 2. 优化构建过程本身以使其尽可能快。 @@ -19,6 +21,8 @@ reviewer: "" 为了更好地理解其中一些优化,了解 OCI 容器镜像层格式本身很有帮助。 + + ## 层格式 它们只是 tar 包! @@ -118,7 +122,7 @@ Whiteout 文件是带有特殊名称的空文件,它告诉容器运行时应 ## Overlay filesystems(叠加文件系统) -像 containerd 或 podman 这样的容器运行时负责在运行容器之前将镜像的层(tar 包)解压到一个目录中。这被称为容器的`rootfs`或根文件系统。 +像 containerd 或 podman 这样的容器运行时负责在运行容器之前将镜像的层(tar 包)解压到一个目录中。这被称为容器的 `rootfs` 或根文件系统。 实际上,对于每个启动的容器,依次将每一层解压到 rootfs 目录中,并注意应用文件修改或删除 whiteout 文件,这将非常缓慢。相反,容器运行时通常使用特殊的文件系统来有效地将各层组合成一个单一的文件系统。 diff --git a/_posts/Article/Translation/developer-tools-secrets-that-shouldnt-be-secrets.md b/_posts/Article/Translation/developer-tools-secrets-that-shouldnt-be-secrets.md index 161b2b9d..280b5a3e 100644 --- a/_posts/Article/Translation/developer-tools-secrets-that-shouldnt-be-secrets.md +++ b/_posts/Article/Translation/developer-tools-secrets-that-shouldnt-be-secrets.md @@ -1,19 +1,23 @@ --- title: 浏览器开发者工具中不应该再有秘密 -authorURL: "" -originalURL: https://christianheilmann.com/2021/11/01/developer-tools-secrets-that-shouldnt-be-secrets/ -translator: "" -reviewer: "" +date: 2021-11-01 15:21:00 +authors: + - luojiyin1987 +original: https://christianheilmann.com/2021/11/01/developer-tools-secrets-that-shouldnt-be-secrets/ +categories: + - Article + - Translation +toc: true --- -2021 年 11 月 1 日星期一下午 3:21 - > **更新**: 由于这篇文章[正在 Hackernews 上热传][1],我在每个标题后的括号中为每个提示添加了支持环境的信息。当我说明 `Chromium 浏览器` 时,指的是所有使用 `Chromium` 内核并具有所有开发者工具的浏览器。这包括 `Chrome` 浏览器、`Microsoft Edge`、`Brave` 以及其他更多浏览器。在此提醒一下: `Microsoft Edge` 是 `Windows 10/11` 系统自带的浏览器,基于 `Chromium`,因此从平台角度来看与 `Chrome` 浏览器类似。它们在用户体验和核心服务方面有所不同。`Edge` 开发者工具与谷歌密切合作,将我们添加到产品中的工作带回 `Chromium` 核心。但是,我在这里谈到的一些东西是微软 `Edge` 的实验和独有功能,它可在 `Windows`、`Mac` 和 `Linux` 上使用。有些功能只能通过 [Edge DevTools for VS Code 扩展][2]在 `Visual Studio Code` 中使用。 这是我今年 9 月在 [CityJS][3] 上发表的演讲。我是 `Microsoft Edge` 开发者人员工具的首席产品经理,这些都是我在开发工具、记录工具和查看用户反馈时遇到的问题。 你可以在 Youtube 上观看[演讲视频][4]。 + + 下面是我所写的所有内容: ## 1. Console 远不止是打印日志! diff --git a/_posts/Article/Translation/everything-I-know-about-ssd.md b/_posts/Article/Translation/everything-I-know-about-ssd.md index 44553a84..683d38ac 100644 --- a/_posts/Article/Translation/everything-I-know-about-ssd.md +++ b/_posts/Article/Translation/everything-I-know-about-ssd.md @@ -1,15 +1,18 @@ --- -title: Everything I Know About SSDs 2019 -authorURL: "" -originalURL: https://kcall.co.uk/ssd/index.html -translator: "" -reviewer: "" -date: "2019-03-01" +title: 我所知道的关于固态硬盘的一切 +date: 2019-03-01 +authors: + - luojiyin1987 +original: https://kcall.co.uk/ssd/index.html +categories: + - Article + - Translation +toc: true --- -# 我所知道的关于固态硬盘的一切 +使用 NAND 闪存的固态硬盘,它们与机械硬盘的区别,以及它们如何影响文件删除和恢复。 -使用 NAND 闪存的固态硬盘,它们与机械硬盘的区别,以及它们如何影响文件删除和恢复 + ## 介绍 diff --git a/_posts/Article/Translation/understanding-container-image-layers.md b/_posts/Article/Translation/understanding-container-image-layers.md index 51fbb192..c05625f0 100644 --- a/_posts/Article/Translation/understanding-container-image-layers.md +++ b/_posts/Article/Translation/understanding-container-image-layers.md @@ -1,20 +1,20 @@ --- title: 理解容器镜像层 -date: 2024-06-07T03:12:52.216Z -author: Ken Muse +date: 2024-06-27T03:12:52.216Z +authors: + - luojiyin1987 authorURL: https://github.com/kenmuse -originalURL: https://www.kenmuse.com/blog/understanding-container-image-layers/ -translator: "" -reviewer: "" ---- - - -**发布时间:** [6 月 27][5], [2024][6] **阅读时间:** 9 分钟 - +original: https://www.kenmuse.com/blog/understanding-container-image-layers/ +categories: + - Article + - Translation +toc: true --- 容器非常了不起。它们允许简单的进程像虚拟机一样运行。这种优雅的背后是一套模式和实践,最终使一切都能正常工作。设计的根源在于*层*。层是存储和分发容器化文件系统内容的基本方式。这种设计既非常简单,同时又非常强大。在今天的文章中,我将解释什么是层,以及它们在概念上是如何工作的。 + + ## 构建分层镜像 当你创建一个镜像时,你通常会使用一个 `Dockerfile` 来定义容器的内容。它包含一系列命令,例如: @@ -26,7 +26,7 @@ COPY content.txt /work/content.txt RUN rm -rf /work/message.txt ``` -在底层,容器引擎会按顺序执行这些命令,为每个命令创建一个 `层`。 但这究竟是如何实现的呢? 最简单的理解方式是将每一层都视为一个目录,其中包含所有已修改的文件。 +在底层,容器引擎会按顺序执行这些命令,为每个命令创建一个“层”。 但这究竟是如何实现的呢? 最简单的理解方式是将每一层都视为一个目录,其中包含所有已修改的文件。 让我们通过一个可能的实现方法的例子来逐步解释。 @@ -39,12 +39,12 @@ RUN rm -rf /work/message.txt 继续我们的例子,压缩文件将包含: -| 文件 | 内容 | -| --------------------------------------------------- | ------------------------------------------------------------------- | -| `layer1.tar.gz` | 空文件 | -| `layer2.tar.gz` | 包含 `/work/message.txt` | +| 文件 | 内容 | +| --------------------------------------------------- | ------------------------------------------------------------ | +| `layer1.tar.gz` | 空文件 | +| `layer2.tar.gz` | 包含 `/work/message.txt` | | `layer3.tar.gz` | 包含 `/work/content.txt` (因为 `message.txt` 文件没有修改) | -| `layer4.tar.gz` | 包含 `/work/.wh.message.txt` (因为 `message.txt` 删除了) | +| `layer4.tar.gz` | 包含 `/work/.wh.message.txt` (因为 `message.txt` 删除了) | | 文件 `content.txt` 没有被修改,所以没有被包含在内。 | 以这种方式构建大量镜像会导致大量的 `layer1` 目录。为了确保名称的唯一性,压缩文件的命名基于内容的摘要。这类似于 Git 的工作方式。它的好处是在识别文件下载过程中任何损坏的同时,还能识别相同的内容。如果内容的摘要(哈希值)与文件名不匹配,则文件已损坏。 @@ -80,7 +80,7 @@ RUN rm -rf /work/message.txt 或者,换句话说: -| 镜像 | 父镜像 | +| 镜像 | 父镜像 | | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | | sha256:635944d2044d0a54d01385271ebe96ec18b26791eb8b85790974da36a452cc5c | | | sha256:9de59f6b211510bd59d745a5e49d7aa0db263deedc822005ed388f8d55227fc1 | sha256:635944d2044d0a54d01385271ebe96ec18b26791eb8b85790974da36a452cc5c |