标签 Github 下的文章

洋葱新闻:“Linus 发现 Windows XP 很棒”

Linux 创始人 Linus Torvalds 在 GitHub 上的 Linux 仓库的 README 中写道:“我删除了Linux,因为我讨厌它,现在我认为它很糟糕。你应该去使用这个很棒的操作系统,它叫 Windows XP,我刚刚发现它很棒。”,这个文件的 URL 是 https://github.com/torvalds/linux/tree/8bcab0346d4fcf21b97046eb44db8cf37ddd6da0 ,没错,看起来是 Linux 的仓库地址。好吧,这是一个洋葱新闻。事实上,这是一个 GitHub 的 bug,任何人都可以通过伪造 URL 而看起来像是另外的仓库和另外的作者。而这个 Bug 由来已久,但是 GitHub 从未准备修复。

老王点评:无论 GitHub 基于什么理由不修复,但是通过这个漏洞可以制作出以假乱真的钓鱼信息,大家一定要注意。

最新版 macOS 12.3 终于移除了 Python 2 的支持

苹果释出了 macOS Monterey 12.3 Beta,一个主要变化是 不再捆绑 Python 2.7。苹果建议开发者使用 Python 3 或替代语言。Python 语言项目在 2020 年 1 月 1 日停止支持 Python 2 分支,接替 Python 2 的 Python 3 早在 2008 年就已经发布,但由于它不向后兼容,导致许多用户仍然停留在 Python 2 分支。但 macOS 也没有预装 Python 3,开发者可选择安装捆绑 Python 3 的 Xcode 开发工具。

老王点评:如果 Python 3 能对 Python 2 提供更多的兼容性,而不是弃之如敝履,就不会有这么多的产品和服务还留在 Python 2。

OpenSea 称其上免费创建的 NFT 80% 都是垃圾或剽窃作品

占有绝对垄断地位的 NFT 市场 OpenSea 宣布,它将限制用户在平台上使用其工具免费创建 NFT 的次数为 50 次。这些免费创建的 NFT 可以跳过支付区块链燃料费用,而在售出时由买家支付。之后在社区的反对之下,OpenSea 又宣布取消这一限制,同时也给出了做此限制的 理由:用这个免费工具创建的项目中,超过 80% 是抄袭作品、虚假收藏和垃圾内容。

老王点评:其实我觉得这种对免费创建的限制是有道理的,要不 OpenSea 可能会沦为垃圾场。

玩家组织成功让多年前关服的 PS3 游戏复活了

玩家组织 PSONE 研究出了一个办法,复活 了越野竞速游戏《摩托风暴》的服务器,恢复了多人游戏功能。《摩托风暴》是一款 PS3 游戏,在 2007 年 3 月发售。10 年前,这款游戏的服务器下线,也就是说玩家不能使用这款游戏的多人游戏功能,而想要在游戏里收集奖杯的玩家必须在线才行。PS3 和 Xbox 360 是第一个大规模应用网络元素的世代,而近年来该世代多款游戏的服务器停止服务,也让一些怀旧的玩家扼腕不已。

老王点评:如果是开源的,那就不会有这种窘境。

龙芯为 GCC 增加 LoongArch 支持

几个月来,龙芯一直致力于为 Linux 内核提供 LoongArch 支持,从新的 CPU ISA 功能到 复制大量 现有的 MIPS64 代码并加入新的 ID,程度不一。同时,他们也一直在编译器/工具链方面工作。最近,LoongArch 对 GNU Binutils 的 支持已经被合并 了,而今天又发出一组补丁,用于提供 GCC 编译器支持。不过 GCC 12 目前的重点是修复错误,因此对 LoongArch 的支持可能要到 2023 年的 GCC 13 才会出现在主线上。

老王点评:虽然国外对 LoongArch 的褒贬不一,但是可喜的是龙芯在一直前进。

GitHub 出现长达数小时的服务瘫痪

GitHub 在美东时间下午 3 点 45 分左右开始出现问题,Git 操作、API 请求、拉取请求和 GitHub 的行动、包和页面等功能都受到影响。开发人员报告了 500 错误,GitHub 说大多数服务是“性能下降”状态,而不是不可用的瘫痪状态。GitHub 上有超过 1 亿个存储库,故障影响到了这些存储库的组织。去年,由于错误的设定导致该服务瘫痪并使其短暂下线了两个小时。

老王点评:当全世界的开源都主要依赖于 GitHub 进行时,这就成了关键故障点。

Docker 贡献者数量远超 Linux

根据 ZDnet 报道,Docker 的 49593 个包有来自 215 个国家的高达 63.2 万名贡献者。这比估计的 Linux 贡献者数量(2 万)大了不止一个数量级,这意味着现在 GitHub 上 7300 万开发者中每 117 个开发者,就有一个对 Docker 有贡献。

老王点评:虽然说给 Docker 中众多的软件包做贡献容易一些,但是这个数量也非常令人吃惊。

GitHub 去年增加 1600 万新用户

GitHub 年度报告,GitHub 说它现在有 7300 万开发者用户,2021 年它获得了 1600 万新用户。用户创建了 6100 万个新存储库,有 1.7 亿个拉取请求被合并到项目中。以及在全球疫情前,有 41% 的开发者在办公室全职或兼职工作,但只有 10.7% 的人预计在疫情结束后会回到办公室。

老王点评:GitHub 一家独大的局面很难改变,就是不知道换帅之后会不会有变化。

美国计算机芯片繁荣的愿景让各城市趋之若鹜

计算机芯片的短缺已经耗尽了全球经济的能量,影响了许多行业,并导致了对高通胀的担忧。美国大幅提高芯片产量的努力,让各个城市争相争取芯片厂商的落地。比如德克萨斯州的泰勒市,该市约有 17000 人,就正全力以赴地争取三星公司计划从明年初开始在美国建造的 价值 170 亿美元的工厂

老王点评:看来不只是我们对芯片工厂热衷,美国也一样,就是不知道等产能拉上来之后会怎么样。

GitHub Actions 是一项为快速建立持续集成和交付(CI/CD)工作流程而提供的服务。这些工作流程在被称为“ 运行器 runner ”的主机上运行。GitHub 提供的 托管运行器 的操作系统的选择是有限的(Windows Server、Ubuntu、MacOS)。

另一个选择是使用 自托管 的运行器,这让仓库管理员对运行器有更多控制。自托管的运行程序是专门为某个存储库或组织服务的。下面的文章介绍了使用 Fedora CoreOS 配置自托管运行程序的步骤。

入门

Fedora CoreOS 是一个精简的操作系统,旨在便于大规模的部署和维护。该操作系统会自动更新,并默认提供运行容器所需的工具。由于这些原因,Fedora CoreOS 是运行 CI/CD 工作流程的一个极佳选择。

配置和配备 Fedora CoreOS 机器的第一步是生成一个 Ignition 文件。Butane 允许你使用更友好的格式(YAML)生成 Ignition 文件。

配置一个 Fedora CoreOS 运行器

要在 Fedora CoreOS 上执行 GitHub Actions,托管主机需要用于注册和运行该运行器的二进制文件和脚本。从 Actions 运行器项目 下载二进制文件和脚本,并部署在 /usr/local/sbin/actions-runner 下。

version: "1.3.0"
variant: fcos
storage:
  directories:
    - path: /usr/local/sbin/actions-runner
      mode: 0755
      user:
        name: core
      group:
        name: core
  files:
    - path: /usr/local/sbin/actions-runner/actions-runner-linux.tar.gz
      overwrite: true
      contents:
        source: https://github.com/actions/runner/releases/download/v2.278.0/actions-runner-linux-x64-2.278.0.tar.gz
      mode: 0755
      user:
        name: core
      group:
        name: core

注册和删除令牌

为一个项目配置运行器需要一个“ 令牌 token ”。这可以防止在没有正确权限的情况下从项目中注册或删除自托管的运行器。GitHub 提供的令牌有一个小时的过期时间。如果运行器在这个时间之后重新启动,它将需要一个新的注册令牌。

该令牌可能出问题,特别是在 Fedora CoreOS 自动更新时。更新过程希望托管主机在收到新数据后至少每隔几周重启一次。

幸运的是,可以使用 GitHub REST API 来获取这些令牌,并在托管主机每次重启时自动配置运行器。下面的 manage-runner.sh 脚本使用 API 来获取令牌,删除任何已经配置好的运行器,并用新的令牌注册运行器。

#!/bin/bash
# Handles the Github Action runner configuration.
# Remove and Registration token expires after 1 hour, if we want our runner
# to work after a reboot (auto update) we need to refresh the tokens.

# First remove the runner with a fresh remove token
REMOVE_TOKEN=$(curl -u ${GITHUB_USER}:${GITHUB_TOKEN} -X POST -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/actions/runners/remove-token | jq -r '.token')
/usr/local/sbin/actions-runner/config.sh remove --token ${REMOVE_TOKEN}


# Then register the runner with a fresh registration token
REGISTRATION_TOKEN=$(curl -u ${GITHUB_USER}:${GITHUB_TOKEN} -X POST -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/actions/runners/registration-token | jq -r '.token')
/usr/local/sbin/actions-runner/config.sh --url https://github.com/cverna/fcos-actions-runner --token ${REGISTRATION_TOKEN} --labels fcos --unattended

上面的脚本使用了一些环境变量,包含 GitHub 用户名和用于验证 REST API 请求的 个人访问令牌 Personal Access Token 。个人访问令牌需要存储库权限,以便成功检索运行器的注册和移除令牌。该令牌是安全敏感信息,所以最好将其存储在一个具有更严格权限的不同文件中。在这个例子中,这个文件是 actions-runner

GITHUB_USER=<user>
GITHUB_REPO=<repo>
GITHUB_TOKEN=<personal_access_token>

以下是创建这两个文件 manage-runner.shactions-runner 的 Butane 片段。

- path: /usr/local/sbin/actions-runner/manage-runner.sh
      contents:
        local: manage-runner.sh
      mode: 0755
      user:
        name: core
      group:
        name: core
    - path: /etc/actions-runner
      contents:
        local: actions-runner
      mode: 0700
      user:
        name: core
      group:
        name: core

在 Fedora CoreOS 上运行 Actions

最后,创建用于配置和启动运行器的 systemd 服务。在 Butane 配置文件中定义这些服务。

systemd:
  units:
    - name: github-runner-configure.service
      enabled: true
      contents: |
        [Unit]
        Description=Configure the github action runner for a repository
        After=network-online.target boot-complete.target
        Requires=boot-complete.target
        [Service]
        EnvironmentFile=/etc/actions-runner
        Type=oneshot
        RemainAfterExit=yes
        User=core
        WorkingDirectory=/usr/local/sbin/actions-runner
        ExecStartPre=tar xvf actions-runner-linux.tar.gz --no-same-owner
        ExecStart=/usr/local/sbin/actions-runner/manage-runner.sh
        [Install]
        WantedBy=multi-user.target
    - name: github-runner.service
      enabled: true
      contents: |
        [Unit]
        Description=Run the github action runner
        After=github-runner-configure.service
        [Service]
        WorkingDirectory=/usr/local/sbin/actions-runner
        User=core
        ExecStart=/usr/local/sbin/actions-runner/run.sh
        [Install]
        WantedBy=multi-user.target

这将创建两个服务:github-runner-configure.service(在主机启动完成后运行一次)和 github-runner.service(运行 Actions 运行器二进制文件并等待新的 CI/CD 作业)。

现在 Butane 配置已经完成,从中生成一个 Ignition 文件并配备一个 Fedora CoreOS Actions 运行器。

$ podman run -i --rm -v $PWD:/code:z --workdir /code quay.io/coreos/butane:release --pretty --strict --files-dir /code config.yaml -o config.ignition

一旦 Ignition 文件生成,它就可以用来在 支持 Fedora CoreOS 的平台上配备一个运行器。

配置一个 Action 来使用一个自托管的运行器

下面的测试 Action 工作流程将测试 FCOS 的自托管的运行器。在你的 git 存储库中创建以下文件 .github/workflows/main.yml

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the action will run.
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: fcos

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Runs a single command using the runners shell
      - name: Run a one-line script
        run: podman run --rm fedora-minimal:34 echo Hello World !

请注意,runs-on 的配置被设置为使用标签为 fcos 的运行器。

本文介绍的代码可以在 这里 中找到。


via: https://fedoramagazine.org/run-github-actions-on-fedora-coreos/

作者:Clément Verna 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

萨尔瓦多正式将比特币作为法币

萨尔瓦多将于当地时间 9 月 7 日将比特币正式作为法币。该国总统说,此举将为生活在国外的萨尔瓦多人节省数百万美元的汇款佣金。但民意调查显示,很多萨尔瓦多人对使用比特币持怀疑态度,他们担心加密货币的波动性。周一早些时候,萨尔瓦多总统表示已经购买了第一批 200 个比特币,当天晚些时候说现在持有 400 个比特币。这些比特币当前大约价值 2000 万美元。

这是第一个将比特币作为法定货币的国家,比特币正在经历其 12 年历史上最大的考验。

Linus Torvalds 指责 GitHub 的合并功能

前天我们报道过,Paragon 公司向 Linux 内核提交了 NTFS3 驱动。但 Linus Torvalds 对该申请并不满意。Linus 说,“对于 GitHub 账户,我真的希望拉取请求是一个签名标签……这应该是一个我可以通过信任链直接追踪到你的 PGP 签名。”虽然为了加快合入,Linus 表示这次就不追究了。但是他对 GitHub 在合并方面的做法非常不满意,他表示,“这是另一个我非常不希望看到的事情 —— GitHub 创造了绝对无用的垃圾合并,你绝不应该使用 GitHub 的界面来合并任何东西。”他认为 GitHub 的合并提交没有适当的提交信息,并且还使用了一个假的 “github.com” 提交者。

封装了底层细节的 GitHub 更关注的是易用性,不知道 GitHub 或其它 Git 托管商会不会因此而改变自己的合并功能。

研究称比特币挖矿耗电仅相当于美国住宅制冷年用电量的三分之一

一项最新研究显示,比特币挖矿每年消耗约 91 太瓦时(万亿瓦时)的电力,相当于全球电力消费总量的约 0.5%,超过了 550 万人口的芬兰的用电量,是 Google 全球业务用电量的七倍多。但这也只相当于美国华盛顿州每年的用电量,或略超美国住宅制冷年用电量的三分之一。在过去 5 年间,比特币挖矿的耗电量增长了 10 倍。

无论支持还是反对,比特币也必将存在下去。至于耗费的电力值不值,就仁者见仁智者见智了。

得州仪器的新计算器将可以运行 Python 程序

尽管该公司 140 亿美元的年收入大部分来自半导体,但其图形计算器仍然是其最知名的消费者产品。这款最新的 TI-84 型号可以按下“alpha”映射到字母键盘,从而输入代码。它还有一个文件管理器,可以快速访问你保存在计算器上的 Python 程序。也可以连接计算机和图形计算器,进行传输数据和更新系统,还可以对计算器进行屏幕截图。

该公司似乎认为它们甚至可以取代教室里的计算机,通过“加入 Python,我们正在使所有学生更容易获得和接触编程,消除了教师为教授这些重要技能而单独保留计算机实验室的必要性。”

得州仪器的计算器简直强大的像个计算机。

FSF 认为 Copilot 是不可接受和不公正的

由微软和 OpenAI 创建的 GitHub Copilot 工具提供了在代码库中训练的 AI 自动完成建议。但这是否会违反原始编码者的许可证?开发者想知道在他们的软件上训练一个神经网络是否真的可以被认为是公平使用。从 GitHub 托管的存储库中复制的代码片段和其他元素是否会导致侵犯版权。专有软件公司在他们的工作基础上建立一个服务,是否有一些根本性的不公平。

现在,自由软件基金会(FSF)呼吁对这些和其他许多问题进行更仔细的研究,它将资助有关微软“GitHub Copilot”问题的论文。

虽然 Copilot 的诞生将来会进一步取消“普通”程序员的工作,但是目前看来,它还有一系列值得争议的非技术问题需要解决。

YouTube-dl 事件后,GitHub 的 DMCA 程序现在包括免费法律帮助

就像无数次向在线内容创作者发出的虚假移除通知一样,开源编码者也经常发现自己处于《数字千年版权法案》(DMCA)的火线上,即使他们没有做错什么,也只能遵守要求。自由编码者或小型开发团队往往没有资源来对抗 DMCA 请求。GitHub 宣布与斯坦福大学法学院合作,为面临与 DMCA 相关的移除请求的开发者提供支持。今后,每当 GitHub 通知开发者一个“有效的盗版要求”时,它将向他们提供一个要求免费独立法律顾问的选项。

通常,开发者面临删除要求时,更简单、更安全的做法是直接关闭代码仓库。现在,GitHub 为此提供进一步的帮助。