Initial commit

This commit is contained in:
dichgrem
2025-03-05 21:03:18 +08:00
parent 058f5dedd5
commit ecb6a492cf
168 changed files with 12590 additions and 0 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
This is Dichgrems Blog,build on Zola framework and use terminimal theme.

428
Terminimal.md Normal file
View File

@ -0,0 +1,428 @@
# Terminimal
[![Build Status](https://github.com/pawroman/zola-theme-terminimal/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/pawroman/zola-theme-terminimal/actions/workflows/pages/pages-build-deployment)
![No JavaScript](https://img.shields.io/badge/JavaScript-none-brightgreen.svg)
![Screenshot](../master/screenshot.png?raw=true)
See the live demo (of the default configuration) here:
https://pawroman.github.io/zola-theme-terminimal/
Tested with Zola v0.17.2. Please note that earlier versions might not work because of breaking changes across Zola versions.
#### Fork disclaimer
This theme is a fork (not a port) of "Terminal" Hugo theme
by Radosław Kozieł (aka. panr):
https://github.com/panr/hugo-theme-terminal
Many thanks for that outstanding original theme, Radek!
For more information about this fork and the differences to the original theme, please see:
[Changes compared to the original theme](#changes-compared-to-the-original-theme) below.
## Versioning
This theme used to be non-versioned, e.g. you'd pull the master branch, and occasionally new features or fixes would
be released.
Starting from version v1.0.0, the project adopted [Semantic Versioning](https://semver.org/).
Please check the [GitHub releases](https://github.com/pawroman/zola-theme-terminimal/releases) to see a change log
and work out if there's any breaking changes.
## How to start
Option A: clone the theme directly into your Zola site folder:
```
$ git clone https://github.com/pawroman/zola-theme-terminimal.git themes/terminimal
```
Option B: include it as a git submodule (it's better if you plan to use CI builders):
```
$ git submodule add https://github.com/pawroman/zola-theme-terminimal.git themes/terminimal
```
Then in your `config.toml` set:
```toml
theme = "terminimal"
# Sass compilation is required
compile_sass = true
```
Also see the Zola documentation on using themes:
https://www.getzola.org/documentation/themes/installing-and-using-themes/
## Shortcodes
The theme adds two custom shortcodes related to image handling.
### `image`
Used to show images.
Required arguments:
- **`src`**
Optional arguments:
- **`alt`**
- **`position`** (center \[default\] | left | right)
- **`style`**
Example:
```
{{ image(src="/img/hello.png", alt="Hello Friend",
position="left", style="border-radius: 8px;") }}
```
### `figure`
Same as `image`, but with a few extra optional arguments:
- **`caption`** (supports markdown)
- **`caption_position`** (center \[default\] | left | right)
- **`caption_style`**
Example:
```
{{ figure(src="http://rustacean.net/assets/rustacean-flat-gesture.png",
style="width: 25%;",
position="right",
caption_position="left",
caption="**Ferris**, the (unofficial) Rust mascot",
caption_style="font-style: italic;") }}
```
## OpenGraph
To add an image to a post, set the `og_image` extra option to the desired image
in the same directory of the markdown file:
```toml
[extra]
og_image = "colocated_image.png"
```
Additionally, for the section pages and for posts to have a fallback image, add
`default_og_image` to the `[extra]` section:
```toml
[extra]
default_og_image = "static/ocean.jpg"
```
## Configuration
### Only show the post's description
On each post you can specify the following:
```toml
description = "test description"
[extra]
show_only_description = true
```
This will render `test description` under this
particular post on the homepage instead of a summary.
### Colors
Both the accent colors and background colors are
configurable.
By default, both accent and background are set
to `blue`.
To configure menu, add this in `[extra]` section
of your `config.toml`:
```toml
[extra]
# One of: blue, green, orange, pink, red.
# Defaults to blue.
# Append -light for light themes, e.g. blue-light
# Or append -auto, e.g. blue-auto
accent_color = "green"
# One of: blue, dark, green, orange, pink, red, light, auto
# Enabling dark background will also modify primary font color to be darker.
# Defaults to accent color (or, if not accent color specified, to blue).
background_color = "dark"
```
### Logo text and link
You can set the "logo" text and what it links to,
by modifying `config.toml` like so:
```toml
[extra]
# The logo text - defaults to "Terminimal theme"
logo_text = "My blog"
# The logo link - defaults to base_url.
logo_home_link = "/take/me/away!"
```
### Author and copyright
You can set the footer's copyright author name like this:
```toml
[extra]
# Author name: when specified, modifies the default
# copyright text. Apart from author, it will
# contain current year and a link to the theme.
author = "My Name"
```
If you don't like the default copyright text,
you can set it to completely custom HTML:
```toml
[extra]
# Copyright text in HTML format. If specified,
# entirely replaces default copyright and author.
copyright_html = "My custom&nbsp;<b>copyright</b>"
```
### Menu
The menu is optional, static (all items are always shown,
no matter what the screen size) and fully user-configurable.
To configure menu, add this in `[extra]` section
of your `config.toml`:
```toml
[extra]
# menu is enabled by adding menu_items (optional)
menu_items = [
# each of these is optional, name and url are required
# $BASE_URL is going to be substituted by base_url from configuration
{name = "blog", url = "$BASE_URL"},
# tags should only be enabled if you have "tags" taxonomy
# see documentation below for more details
{name = "tags", url = "$BASE_URL/tags"},
{name = "archive", url = "$BASE_URL/archive"},
{name = "about me", url = "$BASE_URL/about"},
# set newtab to true to make the link open in new tab
{name = "github", url = "url-to-your-github", newtab = true},
]
```
### Tags
The theme optionally supports tags. To enable them, create
a "tags" taxonomy in your `config.toml`:
```toml
taxonomies = [
{name = "tags"},
]
```
Enabling tags will create a new `/tags` page, and
cause them to show up in `archive` section. Note
that you still need to create a menu link to the tags
page manually.
### Pagination
Pagination is fully supported for post list (main site)
and intra-post (you can navigate to earlier and later posts).
To make sure pagination works properly, you must first configure
it in `content/_index.md`:
```
+++
# number of pages to paginate by
paginate_by = 2
# sorting order for pagination
sort_by = "date"
+++
```
Then, tweak the theme's pagination config in `config.toml`:
```toml
[extra]
# Whether to show links to earlier and later posts
# on each post page (defaults to true).
enable_post_view_navigation = true
# The text shown at the bottom of a post,
# before earlier/later post links.
# Defaults to "Thanks for reading! Read other posts?"
post_view_navigation_prompt = "Read more"
```
### Language code
Internationalization / translation is not supported
but you can set the HTML language code for your
site:
```toml
default_language = "en"
```
### Hack font subset
By default, the theme uses a mixed subset of the Hack font.
Normal weight font uses full character set
(for Unicode icons and special symbols), but all others
(bold, italic etc) use a limited subset.
This results in much smaller transfer sizes, but the subset
might not contain all the Unicode characters you need.
You can enable full unicode support in `config.toml`:
```toml
[extra]
# Use full Hack character set, not just a subset.
# Switch this to true if you need full unicode support.
# Defaults to false.
use_full_hack_font = true
```
Also see [Hack's docs](https://github.com/source-foundry/Hack/blob/master/docs/WEBFONT_USAGE.md).
### Favicon
The theme supports adding a global favicon (applies to
all pages) to the site:
```toml
# Optional: Global favicon URL and mimetype.
# Mimetype defaults to "image/x-icon".
# The URL should point at a file located
# in your site's "static" directory.
favicon = "/favicon.png"
favicon_mimetype = "image/png"
```
### Page titles
The theme allows you to configure how the page titles (the `<title>` elements) are rendered.
Use `"combined"` to render titles as `"Page title | Main title"`.
```toml
# Optional: Set how <title> elements are rendered.
# Values:
# - "main_only" -- only the main title (`config.title`) is rendered.
# - "page_only" -- only the page title (if defined) is rendered,
# falling back to `config.title` if not defined or empty.
# - "combined" -- combine like so: "page_title | main_title",
# or if page_title is not defined or empty, fall back to `main_title`
#
# Note that the main (index) page only has the main title.
page_titles = "combined"
```
All the configuration options are also described in
[`config.toml`](../master/config.toml).
## Extending
Each of the templates defines named blocks, so
it should be quite easy to customize the most common things.
For example, if you want to add extra `<meta>` tags to the
base template, `index.html`, create file like this in `templates/index.html`:
```html
{% extends "terminimal/templates/index.html" %}
{% block extra_head %}
<meta name="description" content="My awesome website"/>
<meta name="keywords" content="Hacking,Programming,Ranting"/>
{% endblock %}
```
## How to contribute
If you spot any bugs or wish to contribute new features, please create a new
[Pull Request](https://github.com/pawroman/zola-theme-terminimal/pulls).
## Changes compared to the original theme
This theme has been forked from https://github.com/panr/hugo-theme-terminal
- Slight changes in the layout and styling.
- Content has been centered (instead of left-aligned).
- The header stripes have been spaced out.
- Tweaks to pagination, especially on mobile (small screens).
- The post title underline is dashed instead of doubly-dotted.
- All links are underlined, as per
[Brutalist Web Design Guidelines](https://www.brutalist-web.design/).
- Tweaks to header font sizes.
- Minor footer tweaks.
- Absolutely **no JavaScript**.
- No JavaScript needed to pre-process anything.
Zola with its Sass pre-processor is the only dependency.
- There's no menu trigger.
- Things load crazy fast, as it's all static content.
- Prism.js syntax highlighting is not supported (you can use
[Zola's](https://www.getzola.org/documentation/content/syntax-highlighting/)).
- All references to social media (e.g. Twitter) have been removed.
- All references to external URLs (e.g. Google CDN) have been removed.
This theme's static assets are meant to be served from where it's hosted.
- [Hack](https://github.com/source-foundry/Hack) is the default font.
- The default color theme is blue (original uses orange).
### New features
- You can pick the accent color as well as background color.
There's a new `dark` background. See [Configuration](#configuration)
below for details.
- Active "section" links will change color indicating the
active section. This is all static, done at template level.
### Features retained from the original
- 5 color themes, depending on your preference:
blue (default), green, orange, pink, red.
- The shortcodes `image` and `figure` (See [Shortcodes](#shortcodes)).
- Fully responsive.
## License
Copyright © 2019 Paweł Romanowski (pawroman)
Original theme: Copyright © 2019 Radosław Kozieł ([@panr](https://twitter.com/panr))
The theme is released under the MIT License.
Check the [license file](../master/LICENSE.md)
for more information.
The license for Hack fonts used is included in
[LICENSE-Hack.md](../master/LICENSE-Hack.md).

108
config.toml Normal file
View File

@ -0,0 +1,108 @@
# Be sure to change these!
base_url = "https://blog.dich.bid"
title = "Dich'blog"
description = "用电子罗盘,转赛博核桃,勘电磁风水,寻网络龙脉"
# Sass compilation is required
compile_sass = true
# The theme supports feeds (RSS and ATOM)
generate_feeds = true
# Use `rss.xml` for RSS feeds and `atom.xml` for ATOM.
feed_filenames = ["atom.xml"]
# Optional: enable tags
taxonomies = [
{name = "tags"}
]
# Code highlighting
[markdown]
highlight_code = true
highlight_theme = "boron"
[extra]
# One of: blue, green, orange, pink, red.
# Defaults to blue.
# Append -light for light themes, e.g. blue-light
# Or append -auto, e.g. blue-auto
accent_color = "blue"
# One of: blue, dark, green, orange, pink, red, light, auto
# Enabling dark background will also modify primary font color to be darker.
# Defaults to accent color (or, if not accent color specified, to blue).
background_color = "dark"
# The logo text - defaults to "Terminimal theme"
logo_text = "Dich'blog"
# The logo link - defaults to base_url.
#logo_home_link = "/take/me/away!"
# Author name: when specified, modifies the default
# copyright text. Apart from author, it will
# contain current year and a link to the theme.
author = "Dichgrem"
# Copyright text in HTML format. If specified,
# entirely replaces default copyright and author.
#copyright_html = "My custom&nbsp;<b>copyright</b>"
# menu is enabled by adding menu_items (optional)
menu_items = [
# each of these is optional, name and url are required
# $BASE_URL is going to be substituted by base_url from configuration
{name = "blog", url = "$BASE_URL"},
# tags should only be enabled if you have "tags" taxonomy
# see documentation below for more details
{name = "tags", url = "$BASE_URL/tags"},
{name = "archive", url = "$BASE_URL/archive"},
{name = "about me", url = "$BASE_URL/about"},
{name = "links", url = "$BASE_URL/links"},
{name = "search", url = "$BASE_URL/search"},
{name = "weekly", url = "$BASE_URL/weekly"},
# set newtab to true to make the link open in new tab
{name = "github", url = "https://github.com/Dichgrem", newtab = true},
]
# Whether to show links to earlier and later (aka. higher/lower) posts
# on each post page (defaults to true).
enable_post_view_navigation = true
# The text shown at the bottom of a post,
# before earlier/later post links.
# Defaults to "Thanks for reading! Read other posts?"
post_view_navigation_prompt = "Thanks for reading! Read other posts?"
# Use full Hack character set, not just a subset.
# Switch this to true if you need full unicode support.
# Defaults to false.
use_full_hack_font = false
# Optional: Global favicon URL and mimetype.
# Mimetype defaults to "image/x-icon".
# The URL should point at a file located
# in your site's "static" directory.
favicon = "/dich.webp"
favicon_mimetype = "image/webp"
# Optional: Set how <title> elements are rendered.
# Values:
# - "main_only" -- only the main title (`config.title`) is rendered.
# - "page_only" -- only the page title (if defined) is rendered,
# falling back to `config.title` if not defined or empty.
# - "combined" -- combine like so: "page_title | main_title",
# or if page_title is not defined or empty, fall back to `main_title`
#
# Note that the main (index) page only has the main title.
page_titles = "main_only"
# Optional: default image to use for OpenGraph.
# If the page doesnt set og_image, use this one as fallback. Usefull
# for indexes and taxonomies' pages.
#default_og_image = "static/ocean.jpg"

View File

@ -0,0 +1,184 @@
+++
title = "电子邮件是如何工作的:SPF/DKIM/DMARC"
date = 2024-02-20
[taxonomies]
tags = ["网络艺术"]
+++
前言 在互联网的日常使用中,电子邮件作为一项基础服务扮演着重要的角色。尽管在过去几十年里出现了各种新型的通讯方式,但电子邮件仍然保持着其不可替代的地位。了解电子邮件的工作原理,有助于更好地理解这一基础服务是如何运作的。
<!-- more -->
## 一. 基于协议的传输
与许多其他基于协议的应用一样,电子邮件依赖于一系列协议来进行传输和交换。而基于协议的应用一般不会轻易地被历史淘汰:在过去的几十年里,基于 HTTP 上层的网站,以及技术更新换代了好几波,但底层的协议依然还是 HTTPHTTPS。基于 BitTorrent 协议的文件交换协议和基于SMTPSimple Mail Transfer Protocol的电子邮件传输便是其中之一。
## 二. 邮件发送的流程
电子邮件的发送过程可以简单地描述为以下几个步骤:
- 用户在邮件客户端例如Gmail中撰写并发送一封邮件。
- 邮件客户端使用SMTP协议将邮件发送到相应的邮件服务器。
- 通过DNS查询MX记录找到接收方的邮件服务器。
- 发送邮件服务器使用SMTP协议将邮件传递给接收方的邮件服务器。
- 接收方的邮件服务器将邮件存储在相应的邮箱中,供用户查看。
为了确保通信安全电子邮件的发送还引入了一些安全机制如SPF、DKIM和DMARC。
- SPFSender Policy Framework用于验证发件人的身份防止发件人伪造。
- DKIMDomainKeys Identified Mail通过数字签名验证邮件的真实性。
- DMARCDomain-based Message Authentication, Reporting, and Conformance结合了SPF和DKIM提供了更严格的邮件验证机制。
## 三.具体流程
假设用户 [a@gmail.com](mailto:a@gmail.com) 发送一封邮件到 [b@qq.com](mailto:b@qq.com),会执行如下的流程。
**1.查询 MX 记录**
当我们在 Gmail 网页上撰写一封邮件并点击发送按钮之后。Gmail 会用自己的内部协议链接 Gmail 的 Outgoing SMTP 邮件服务器。
Outgoing SMTP 验证用户权限,然后将邮件以 MIME 格式发送到发送队列中。
Gmail SMTP 服务器会通过 DNS 查询到域名 `qq.com` MXMail Exchanger 记录(`dig MX qq.com`),找到邮件服务器的 IP 所在。
在 Linux 下也可以通过 `dig mx qq.com` 来查询到。这一步在对应到自建的邮件服务器的时候,就是通过配置 DNS 的 MX 记录来实现的。
一般情况下会配置一个 A 记录 `mx.example.com` 指向服务器的 IP 地址。然后再配置一个 [[MX 记录]]`@` 全部域名的 MX 请求全部转发给 `mx.example.com`
**2.SMTP 发送**
当 Gmail 的服务器找到 QQ 邮箱的 IP 地址之后,邮件就会通过 SMTPSimple Mail Transfer Protocol 协议连接服务器的连接,尝试发送给 QQ 的服务器。
为了简化理解SMTP 传输的时候就直接声明,我 [a@gmail.com](mailto:a@gmail.com) ,我要发送邮件到 [b@qq.com](mailto:b@qq.com) 内容是某某某。QQ 邮箱的服务器接收到 Gmail 的邮件之后,再根据用户名决定发给具体谁的邮箱。
这中间会发现不存在任何验证发送方身份的过程这也就意味着任何人都可以伪装一个任意的发送邮箱以一个伪装的邮箱发送邮件。SMTP 最早是建立在相互信任的基础之上的,所以也给后面的恶意使用留下了一些漏洞,为了修复这个漏洞发明了 SPF。
**3.SPF 验证**
上文提到过 SMTP 协议发送邮件的过程中没有验证发送方,这也就意味着发信方可以任意指定发件人邮箱地址,这会存在一些安全问题。
具体来说,本来我的 Gmail 邮箱是 `a@gmail.com`,假如有不法分子,就可以利用这个漏洞,伪装成自己是 `a@gmail.com` 给别人发送邮件。
[[SPF]] 的目的就是为了防止伪造发信人。
- SPF 的原理
SPF 的实现原理非常简单,就是通过添加一条 DNS 记录。
如果邮件服务器收到一封来自主机 `1.1.1.1` 的邮件,并且发件人是 `a@gmai.com`,为了确认发件人,邮件服务器就会去查询 `gmail.com` 的 SPF 记录。如果域名设置了 SPF 记录,允许 `1.1.1.1` 的 IP 地址发送邮件,那么收件的邮件服务器就会认为邮件是合法的,否则就会退信。
有了 SPF 记录之后,如果有人想要伪装成 `a@gmail.com` 他既不能修改 gmail.com 的 DNS 解析,也无法伪造 IP 地址,就有效的防止了伪装。
- SPF 的语法
在自建邮件服务器的时候,经常会让我们设置一个 TXT 记录,配置值为 `v=spf1 mx ~all`,这表示的意思是允许当前域名的 MX 记录对应的 IP 地址。
下面再举个非常常见的例子:
````
v=spf1 a mx ip4:173.10.10.10 -all
````
表示允许当前域名配置的 A 记录MX 记录的 IP 地址,以及一个额外的 IP 进行发信。
- SPF 存在的问题
SPF 机制可以有效地规避了发送邮件方伪造发件人的问题。但实际使用的时候,如果你使用多个邮箱,然后设置了其中 [c@163.com](mailto:c@163.com) 邮箱自动转发到 [a@gmail.com](mailto:a@gmail.com) 中。
那么这个时候如果 `b@qq.com` QQ 邮箱发送了一封邮件到 `c@163.com` 邮箱163 邮箱原封不动地将邮件转发到 Gmail 邮箱,这个时候发件人是 `b@qq.com`,但是 Gmail 回去查询 qq.com 的 SPF 记录,但会发现并不包含 163 邮箱的 IP 地址,会误判转发的邮件;所以又诞生了 DKIM。
**4.DKIM**
DKIM (DomainKeys Identified Mail) 的缩写,允许发送者通过在邮件的 header 中包含一段数字签名来验证邮件。DKIM 使用公私密钥来确保邮件内容是从授信的邮件服务器发送的。
还是利用上面的例子,因为我们把所有发送到 163 邮箱的邮件都转发到了 Gmail 邮箱,所以来自 QQ 邮箱的邮件在验证 SPF 时会失败。
那么在 DKIM 中,发送邮件的服务器,比如 QQ 邮箱,会使用公私钥对邮件内容进行签名,并将签名和邮件内容一起发送。当 Gmail 收到从 163 邮箱转发过来的 QQ 邮箱邮件的时候,就会去查询 `qq.com` 的 DNS 记录,拿到公钥。然后使用公钥和签名来验证邮件内容。如果验签不通过,则将邮件判定为伪造。
**5.DMARC**
经过了 SPF 和 DKIM 的保证,是不是就可以完美的发送接收邮件了?其实并不能,我们通过邮件后台来看一下邮件的原始文本。
````
MIME-Version: 1.0
Return-Path: xxx@fake.com
DKIM-Signature: d=fake.com,b=adceabkekd12
Date: Tue, 22 Mar 2022 06:37:58 +0000
Content-Type: multipart/alternative;
boundary="--=_RainLoop_587_997816661.1647931078"
From: admin@a.com
Message-ID: <a67d96a38592cdad46cca89e98dda26d@techfm.club>
Subject: Seems it works
To: "Somebody" <a@gmail.com>
----=_RainLoop_587_997816661.1647931078
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
~~
----=_RainLoop_587_997816661.1647931078
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html><html><head><meta http-equiv=3D"Content-Type" content=3D"t=
ext/html; charset=3Dutf-8" /></head><body><div data-html-editor-font-wrap=
per=3D"true" style=3D"font-family: arial, sans-serif; font-size: 13px;"><=
br>~~<signature></signature></div></body></html>
----=_RainLoop_587_997816661.1647931078--
````
SPF 解决了接收方验证发件人域名 SPF 记录内 IP 地址从而验证发件人的问题。但是因为 SPF 定义的发件人是 RFC5321 协议中规定的 Return-Path而 DKIM 在邮件头中直接包含了域名,只要使用该域名的公钥验证通过即可。
而现在的邮件服务给用户展示的发件人都是 From 字段,而不是 SPF 的 `Return-Path`,也不是 DKIM 的 `DKIM-Sginatur: d=`,所以攻击者可以通过伪造这两个字段,发送如上的邮件,完美通过 SPF 和 DKIM 检查,因为 SPF 检查 `Return-Path` 而 DKIM 验证的 `d=` 也是 `fake.com` 所以最终用户看到的发件人却是 `admin@q.com`。
所以就诞生了 DMARC。DMARC 结合了 SPF 和 DKIM规定了 `Return-Path` 和 `DKIM-Signature: d=` 两个至少需要有一个与 From 头对应,否则判定为失败。
当邮件服务器接收到邮件时,先验证 DKIMSPF然后再根据 DMARC 的配置检查。这样就能确保最终用户看到的 `From` 字段和 SPF、DKIM 认证的发件人一致了。

View File

@ -0,0 +1,114 @@
+++
title = "电子邮件是如何工作的:POP3/IMAP/SMTP"
date = 2024-02-21
[taxonomies]
tags = ["网络艺术"]
+++
前言 POP3、IMAP 和 SMTP 是用于电子邮件传输的常见协议和服务,这些协议共同构成了电子邮件系统的基础,允许用户接收、发送和管理电子邮件。
<!-- more -->
1. **POP3邮局协议版本3**POP3 是一种用于接收电子邮件的协议。当你使用 POP3 时电子邮件会从服务器下载到你的设备上并且通常会从服务器上删除。这意味着邮件只存在于你的设备上而不再保留在服务器上。POP3 通常用于单一设备或者设备上少量的邮件存储需求。
2. **IMAP互联网邮件访问协议**IMAP 也是一种用于接收电子邮件的协议,但它与 POP3 不同的是IMAP 允许邮件保留在服务器上并且同步到多个设备上。这意味着无论你使用哪个设备访问邮件都能看到同样的邮件状态包括已读、未读、已删除等。IMAP 适用于需要在多个设备之间同步邮件的情况,例如在手机、平板电脑和台式电脑之间。
3. **SMTP简单邮件传输协议**SMTP 是用于发送电子邮件的协议。当你发送一封电子邮件时,你的邮件客户端会使用 SMTP 协议将邮件发送到电子邮件服务器。SMTP 负责将邮件从发送者的电子邮件客户端传送到接收者的邮件服务器。SMTP 是一个推送协议,它将邮件推送给服务器,而不是拉取邮件。
这是每个协议的简要技术原理:
## **POP3邮局协议版本3**
- 客户端连接到邮件服务器上的 POP3 端口(通常是 110 端口)。
- 客户端发送身份验证信息(通常是用户名和密码)以登录到邮箱。
- 一旦登录成功,客户端可以请求收件箱中的邮件列表。
- 客户端可以选择下载邮件到本地设备。
- 下载的邮件通常从服务器上删除,但可以根据设置保留一份副本。
- 客户端可以选择在下载后删除邮件,或者在稍后删除它们。
## **IMAP互联网邮件访问协议**
- 客户端连接到邮件服务器上的 IMAP 端口(通常是 143 端口)。
- 客户端发送身份验证信息(通常是用户名和密码)以登录到邮箱。
- 一旦登录成功,客户端可以请求收件箱中的邮件列表,以及邮件的状态信息(如已读、未读、已删除等)。
- 客户端可以选择下载完整的邮件或邮件的部分内容到本地设备,同时保留邮件在服务器上的副本。
- 客户端对邮件的操作(如标记为已读、移动到文件夹等)将反映在服务器上,从而在其他设备上同步。
## **SMTP简单邮件传输协议**
- 客户端连接到邮件服务器上的 SMTP 端口(通常是 25 端口)。
- 客户端发送邮件内容和邮件头信息(如发件人、收件人、主题等)给服务器。
- 服务器接受邮件,并将其转发到接收者的邮件服务器。
- 接收者的邮件服务器接收邮件,并将其存储在相应的收件人邮箱中。
- SMTP 是一个简单的推送协议,它负责将邮件从发送方传送到接收方,但不涉及接收方对邮件的确认或响应。
## **它们的区别和共同点:**
**区别:**
**功能:**
- POP3 主要用于从邮件服务器上下载邮件到本地设备,通常会将邮件从服务器上删除。
- IMAP 允许用户在多个设备之间同步邮件状态,并且邮件保留在服务器上。
- SMTP 用于发送电子邮件。
**邮件管理:**
- POP3 在客户端下载邮件后通常会将邮件从服务器上删除,因此邮件只存在于本地设备上。
- IMAP 允许邮件在多个设备之间同步,因为邮件保留在服务器上。
- SMTP 不管理邮件存储,它只是负责将邮件从发送方传送到接收方。
**端口号:**
- POP3 默认端口号是 110。
- IMAP 默认端口号是 143。
- SMTP 默认端口号是 25。
**操作方式:**
- POP3 是拉取协议,客户端需要主动连接到服务器并拉取邮件。
- IMAP 是双向同步协议,客户端与服务器之间进行交互,可以同步邮件状态。
- SMTP 是推送协议,用于将邮件从发送方传送到接收方。
**共同点:**
- **用途:**:它们都是用于电子邮件传输的标准协议。
- **与邮件服务器的通信:**:它们都涉及客户端与邮件服务器之间的通信。
- **身份验证:**:它们都需要用户身份验证来访问邮箱。
## **一次完整的邮件通信过程**
**发送方(发件人):**
- **撰写邮件:** 发件人使用邮件客户端如Outlook、Gmail等撰写邮件并填写收件人的电子邮件地址、主题和邮件内容。
- **SPF 检查:** 发送邮件服务器可能会执行 SPFSender Policy Framework检查。它查询发件人域名的 DNS 记录,以确认发送邮件的服务器是否被授权发送邮件。
- **DKIM 签名:** 发送邮件服务器对邮件进行 DKIMDomainKeys Identified Mail签名。它使用发件人域名的私钥对邮件进行加密签名以确保邮件内容在传输过程中不被篡改。
- **SMTP 发送邮件:** 发送邮件服务器使用 SMTP简单邮件传输协议将邮件发送到接收邮件服务器。SMTP 服务器与接收邮件服务器之间建立连接,并通过指定的端口(通常是 25 端口)传输邮件。
**接收方(收件人):**
- **SMTP 接收邮件:** 接收邮件服务器接收到发送方发送的邮件。SMTP 协议负责将邮件从发送方传输到接收方。
- **SPF 验证:** 接收邮件服务器执行 SPF 验证,检查发送方服务器的 IP 地址是否在发件人域名的 SPF 记录中被授权发送邮件。
- **DKIM 验证:** 接收邮件服务器对收到的邮件执行 DKIM 验证。它使用发件人域名的公钥来验证邮件的 DKIM 签名,以确保邮件内容的完整性和真实性。
- **DMARC 检查:** 如果接收邮件服务器支持 DMARCDomain-based Message Authentication, Reporting, and Conformance它会执行 DMARC 检查。DMARC 结合了 SPF 和 DKIM允许域名所有者指定如何处理未通过验证的邮件。
- **投递邮件到邮箱:** 如果邮件通过了所有的验证步骤,并且没有被识别为垃圾邮件,接收邮件服务器将把邮件投递到收件人的邮箱中。
**邮件获取(收件人):**
- **POP3 获取邮件(可选):** 收件人可以使用 POP3邮局协议版本3从邮件服务器上下载邮件到本地设备。POP3 客户端通过指定的端口(通常是 110 端口)连接到邮件服务器,并下载邮件到本地设备上。根据设置,邮件可能会从服务器上删除。
- **IMAP 获取邮件(可选):** 收件人可以使用 IMAP互联网邮件访问协议从邮件服务器上获取邮件。IMAP 允许邮件保留在服务器上并且在多个设备之间同步邮件状态。IMAP 客户端通过指定的端口(通常是 143 端口)连接到邮件服务器,并获取邮件列表和邮件内容。
这是一个完整的双向邮件通信过程,包括了 SPF、DKIM、DMARC以及 POP3、IMAP、SMTP 协议的作用。这些技术和协议共同构成了电子邮件系统的基础架构,保障了邮件的传输安全性和可靠性。

709
content/Network-ISPs.md Normal file
View File

@ -0,0 +1,709 @@
+++
title = "Network的艺术:国内至国际骨干ISP线路整理"
date = 2024-02-10
[taxonomies]
tags = ["网络艺术"]
+++
前言 本文主要探讨的是IPv4网络国际出口线路的质量分析以及各大ISP的介绍。
<!-- more -->
## **国内几大骨干网介绍**
目前国内有三大ISP电信、联通、移动电信有2大骨干网——163和CN2联通有2大骨干网——169和A网移动只有1个骨干网CMNET一共有5大骨干网这些骨干网都有自己的独立国际出口和国外ISP有直接Peer或Transit。
另外有用于科研和教育用途的2个小型骨干网CERNET教育网主用于高校和CSTNET科技网这2个骨干网也有自己的独立国际出口但是总体规模远小于电信、联通、移动故能承载的出国带宽有限。
- 电信的163骨干网自治系统编号 `AS4134`
- 电信的CN2骨干网自治系统编号 `AS4809`
- 联通的169骨干网自治系统编号 `AS4837`
- 联通的A网骨干网自治系统编号 `AS9929`
- 移动的CMNET境内骨干网自治系统编号 `AS9808`
- 移动的CMI境外骨干网自治系统编号 `AS58453`
- CERNET骨干网自治系统编号 `AS4538`
- CSTNET骨干网自治系统编号 `AS7497`
> 要注意一点的是CMNET并没有和国外ISP有直接的互联而是借助其境外骨干网CMI进行互联的。
- ### AS4134 CHINANET 中国电信163骨干网
宽带业务范围:普通家用宽带、商用宽带、政企宽带
海外加速的专有业务163精品网套餐上海地区
已知出口:北京、上海、广州
全国规模最大的骨干网享有最大的国际出口如果读者办理的是一般性的电信宽带又或者是商宽访问境外网站如果对方ISP没有购买电信的CN2 Transit那么就走这个骨干网。
- ### AS4809 CNCN(CN2) 中国电信第二代骨干网
宽带业务范围:家用游戏及海外加速宽带、商用跨国优化宽带、政企宽带
海外加速的专有业务CN2国际精品网套餐覆盖几乎全国
已知出口:北京、上海、广州、乌鲁木齐
技术先进一般到一个ISP有不止一个Policy可以到达灵活性非常高因此可以提供稳定快速的国际互联服务一般对海外聊天、游戏有较高需求的都会使用该网。目前该网是国内到国际网络高峰期能提供最好速率和体验的骨干网之一。
- ### AS4837 China Unicom BackBone 中国联通骨干网
宽带业务范围:家宽、商宽、政企宽带
海外加速业务:尚不明确,或当前未推出
已知出口:北京、上海、广州
如果是联通用户除非访问的对方ISP购买了电信CN2 Transit/联通的CU Premiun否则一律走169骨干网。该网目前出国拥堵程度小于电信163但是总体速度和延时可靠性不如CN2。因价格便宜实惠一般被很多游戏爱好者国际服玩家以及对普通外教课程有需求的首选宽带。
通常我们这些Player也会更多倾向的考虑联通宽带因为目前到国际网络普遍较好的就是联通的169骨干网。
- ### AS9929 CHINA UNICOM Industrial Internet Backbone 中国联通工业互联骨干网
宽带业务范围:商业宽带、政企宽带
海外加速服务:本网专做海外加速服务
已知出口:北京、上海、广州
本网前身为网通的骨干网后与联通合并后改为联通A网联通将该骨干网用于国际互联加速服务价格昂贵主要是跨国企业在使用该网已无家宽业务。
- ### AS9808 China Mobile 中国移动骨干网
宽带业务范围:家宽、商宽、政企宽带
海外加速业务尚不明确或为高Qos商宽/机房宽带
已知出口:北京、上海、广州
AS9808为移动境内的骨干网未设与国际ISP Peer故所有出境流量通过AS58453CMI与外网互联。
AS58453又被称之为CMI是移动的国际段骨干网最早只在香港建网并接入HKIX后逐渐扩大至全球。
移动骨干网现如今已经不再具有国际出口优势目前三网中只略好于电信163。只有高Qos的宽带才可以体验到17年前移动最初的乐趣。
- ### **AS4538** CERNET China Education and Research Network 中国教育研究网络
宽带业务范围:各大高校的校园网和部分大型国内云服务提供商
已知出口:北京清华大学
该网不服务于家宽、商宽、政企,一般来说,只有大学生和大学教授才会经常接触到这个网络。
## 国内ISP与国际ISP的互联详情
## 亚太地区
### **1.中国香港**
常见ISPCMI、CUG、NTT、PCCW、Telia、Telstra、CHT、HKBN、HKT、WTT、HGC、GTT、TaTa、HE、Cogentco、SingTel
常见IXHKIX、EIEHKGEquinix Internet Exchange HongKong
常见下游Cloudflare、Amazon、Azure、Google、CDN77、Cera Network
该地区ISP连接质量排名仅供参考有些线路走不同的汇聚层会有不同的质量
AS4134CUG > CMI > Telstra >Others对于163来说只有CMI、CUG、CN2才可以不被严格的Qos限速其他163直连的ISP在高峰几乎都一致性地失速再往后比较就没有意义了
AS4837CUG > CMI > PCCW > CHT > HKBN/WTT > HKT > Others
AS58453CMI > CUG > SingTel > HKIX > NTT > HKBN/WTT > Others
我相信对于很多南方地区的用户来说对于需要访问一些全球类的网站离得最近的CDN网络都是在香港延时最低。香港机房一直都是很多面向亚太地区服务器托管商的兵家必争之地所以也涌现出了大量的IDC商家可惜虽然鱼目混杂但是能做到价格便宜且到国内直连的却少之又少直连高昂的宽带单价也劝退了大部分商家。
截至目前只有国内大厂如阿里云、腾讯云敢大规模对外提供到国内直连的低价的香港轻量云服务把价格从千元价位瞬间杀至2位数但是因为需求量极大而不得不严重超售宽带——极大的延时抖动随机不确定的丢包这使得对于托管在腾讯云、阿里云香港的网站的访客来说体验并不好。
- **CMI - 移动自己的国际骨干网**
由于CMI自己也在卖香港资源所以有些下游会选择直接购买CMI的Transit来获得高Qos的CMI体验这样国内用户到这些下游提供商就可以全部走移动的骨干网来获得高性价比且高质量的访问体验。
境内连接质量非常高只要对方下游接入了足够的CMI Transit宽带峰值宽带基本是移动保证的。无论是电信、联通还是移动当然移动用户访问过去优先级是最高的。虽然高性价比但是毕竟是香港地区流量单价依旧远超美欧Transit的单价。
- **CUG - 联通自己的国际骨干网**
同移动的CMI联通也卖香港资源自治系统编号AS10099很多下游也选择接入了CUG的资源这对于联通用户来说等于获得了很好的质量保证。
境内连接质量非常高只要对方下游接入了足够的CUG Transit宽带峰值宽带基本是联通保证的。无论是电信、联通还是移动当然联通用户访问过去优先级是最高的
- **NTT香港**
- **可直连的国内骨干网AS4809、AS58453**
在香港地区只有电信CN2、移动可以直连其中电信CN2买了NTT Transit 。其余电信163和联通169都会绕路日本和美国详见NTT日本和NTT美国
连接质量需要注意的是CN2很多时候不是万能的特别是香港地区。CN2到香港NTT不可靠有时候会爆炸延时会呈现剧烈的抖动如果需要追求高稳定性不推荐CN2用户使用接入香港NTT的网络。
移动如果不买他们的商业高Qos宽带在高峰时期直连NTT会被Qos丢包和延时都会显著增加速度一般无法超过10Mbps。对于高Qos的移动用户也并不乐观高峰时期因为上海和广州地区汇聚层拥堵显著所以最高速率往往也无法超过200Mbps
特殊CM2精品网大客户除外此类客户购买了移动的国际加速业务移动优先保证此类 VIP 付费客户的宽带Qos等级仅次于移动内网业务的必要控制流量是所有运营类宽带里最高的故除非PoP塞爆否则在CMI和各大ISP的Peer下都会极力保证合同签约速率哪怕是NTT、Cogent这些平时流量极大的网络都可以做到插队绿色通道。
- **PCCW香港/HKT**
- **可直连的国内骨干网AS4134、AS4809、AS4837、AS9929、AS58453**
我们平时接触PCCW的机会很多PCCW也有一个负责国际优化的网络PCCWG G=Global我们平时遇到的商家一般接入的都是PCCW非含G的网。其实PCCW的效果在平时是被夸大的就算是线路可以直连实际综合连接效果也仅仅是一个平均水平。
电信163AS4134到香港PCCW是否直连看本地电信网络是否有自己的AS号比如北京电信的AS4847城域网上海电信的AS4812城域网等。一般来说如果该地网络有自己的城域网AS号专门管辖除非商家有特别优化那么一般到香港PCCW不直连否则如果是直接位于AS4134上一般会直连。电信网络到PCCW一般只有北京和广州两个汇聚层可达上海汇聚层不可达高峰丢包较高速度不理想。
联通169AS4837联通到香港PCCW可能绕美原因和电信部分相同不再赘述。直连的情况下联通到PCCW效果要远远好于电信处于可用的状态。
联通A网AS9929 **网络质量基本是这么多网络里面连接到PCCW最好的延时抖动也是最低的**。但是9929的价格比CN2都要贵上好多倍一般没有点钞能力是用不上的...
移动的CMIAS58453如果没有商家优化移动会随机把路由发往美国、日本、香港三地以实现流量平衡在用户看来这就导致延时时高时低非常不稳定不推荐移动使用。
同时HKT隶属于PCCW所有的国际出口都是走PCCW/PCCWG的。HKT因为可以走上PCCWG和德国地区直连所以也被称之为打机神线。但是普通的HKT家宽/静态根据段不一样联通169可能绕韩国KT也有可能直连
联通9929通过PCCW与HKT互联。
- **Telstra Global香港**
可直连的国内骨干网AS4134、AS4837、AS4538、AS9929、AS58453
这个网络我相信教育网用户会比较熟悉Pacnet就是Telstra的Telstra 承担了教育网的亚太地区的主要出口。
Telstra是为数不多三网都可以直连香港对我们很友好的ISP。哪怕是电信163也可以在香港地区直连Telstra高峰速度也算是电信163网络中顶级的了我一向非常推荐Telstra于是在此反复安利了。另外Telstra也是电信163到亚太地区特别是印度、澳大利亚、新加坡低延时的性价比解决方案。
Traceroute to India Telstra Global
联通的169网络到Telstra也不差在香港的直连宽带很大高峰情况据近一年的SmokePing数据来看很稳定如果想要搞一个新加坡的VPS选Telstra线路的也不差哦~香港的Telstra线路的VPS很少
AS9929与Telstra Global有Peer高峰速度非常可观。
香港Telstra和移动CMI的互联就比较拉垮了.... 整体互联宽带相比与NTT、HKIX而言相形见绌这也为高峰的延时猛涨买下了伏笔互联宽带一旦打满数据包需要排队等待延时立即升高。较小的宽带会影响线路的稳定性如遇DDOS塞满PoP延时和丢包也会使得网络瞬间不可用。
所以移动用户决定要用Telstra线路的服务器来搞事情之前最好深思熟虑一下 - -
- **CHT香港**
可直连国内骨干网AS4134、AS4837、AS58453
CHT即中华电信为中国台湾的第一大ISP拥有2大骨干网CHW「 HINET」、TWGATE我们通常说的Hinet即为CHW网络CHW与TWGATE的关系可以参照电信163和CN2的关系。
事与愿违从几天前开始电信163骨干网到CHW网络的效果急转直下无论是低峰还是高峰的下载速度都只能用惨淡来形容。所以除非你有业务需求否则我不推荐你把个人网站放在CHW下高昂的成本价格现在无法匹配上其延时和速度是个性价比很低的选择。
相比于电信163的拉垮表现联通169的表现就漂亮的多差不多的延时却有着更低的丢包更高的峰值速度。但是鉴于该地区很高的主机售价如果你是一个联通用户CHW也未必是最佳的选择。
也别对移动CMI抱有太大的期望在低峰和高峰表现截然不同高峰常常极度拉垮上面的Telstra好歹还是有速度这个是真的一点速度都跑不出来不推荐。
- **HKBN/WTT**
可直连国内骨干网AS4134、AS4837、AS58453
HKBN都主要服务于香港宽带故一起讨论了目前没有看到亚太其他有接入它们的案例。一般只有在流媒体解锁用途的时候会用到它。
HKBN三网可以直连由于没有资料表明HKBN拥有强大的国际骨干网这两家也没有什么特殊的地方故点到为止。
- **HE香港**
可直连国内骨干网AS58453Through HKIX、AS9929via HKIX
移动可以通过HKIX直连HE香港但是该操作需要IDC调整路由表否则移动默认连接香港HE会绕美。
联通9929同样也是通过HKIX直连HE香港。曾经是走CUG的HKIX互联如今是走联通9929自己与HKIX的互联。
爆炸绕路三幻神之一所以对于电信、联通169和教育网来说都会绕美故详见HE美国
- **TaTa香港**
可直连国内骨干网AS4837、AS9929
电信163网络原先和Tata在香港有Peer但现在基本不走了具体原因未知。联通和Tata在香港直连大部分情况下回程绕美安徽联通商宽到香港GCP/台湾GCP标准ip回程走Tata直连。此线路出现的概率极小联通4837和香港Tata存在带宽大约为600mbps的peer。
在特殊优化下联通9929可以经过TATA与CUG的Peer来得到直连。但是非优化线路哪怕跟CUG有Peer也绕美。不愧是爆炸绕路三幻神之首...
- **Cogentco香港**
可直连国内骨干网:无
爆炸绕路三幻神之一。Cogentco在香港地区没有国内的ISP可以直连。电信、联通9929、移动和教育网会绕美联通169则绕新加坡详见Cogentco美国、Cogentco新加坡
- **GTT香港**
可直连国内骨干网:无
GTT在香港地区没有国内的ISP可以直连。三网均会绕美详见GTT美国
### **2.中国澳门**
常见ISP中国电信澳门分公司、CTM、MTel
- **中国电信(澳门)**
中国电信自己在澳门经营的分公司国内全部网络都可直连走AS4134或AS4809GIA
- **CTM**
可直连国内骨干网AS4134*、AS4837*、AS58453
> 并非所有IP都直连非大陆优化的国际网络都不直连
CTM是澳门最早成立的电信公司在澳门地区提供上网服务目前仍旧是当地规模最大的ISP。
CTM很早就和电信163、联通169互联网络质量可靠但是CTM的机房托管业务把网络分为了2类一类是国内优化即提供国内直连路由一类是更加便宜的国际路由这类路由不提供国内直连。目前市场上比较平民的澳门VPS都是国际路由并未针对国内优化。
移动则是在后期不断扩张中涉及澳门移动上网业务后在澳门建设PoP但澳门PoP只和香港PoP相连接所以移动用户如需访问澳门CTM需要先经过香港方可到达延时自然就不如前者低大约多了6ms
- **MTel**
可直连国内骨干网AS4134、AS58453
MTel于2011年成立是所有澳门经营的电信公司里资历最浅的。MTel和中国电信163目前已经实现互联但因容量很小导致互联效果不佳——澳门MTel和中国电信163的互联经常打满延时波动很大晚高峰受限于整体互联宽带大小速度也无法令人满意。
联通绕日本NTT主要取决于联通到日本NTT的表现移动走自家的澳门PoP主要取决于CMI是否给力。
### **3.中国台湾**
常见ISPHiNet、TFN台湾固网、SeedNet、TaNet台湾学术网络、HomePlus中嘉宽频
常见IXTWIX
- **HINET**
可直连国内骨干网AS4134、AS58453、AS4837
其中 AS4134 和 AS4837 延迟都明显要比 AS58453 高一些。广州移动延迟大约 40ms武汉电信家宽环境中延迟大约 50ms~60ms北京电信商宽大约 70ms上海联通商宽延迟大约170ms长沙联通商宽延迟大约140ms。
HiNet是中华电信CHT的一个品牌也是全台湾最大的宽带提供商。目前台湾地区的主流流媒体解锁都是用了HiNet动态IP家宽以及静态IP商宽、IDC来解锁的。HiNet拥有整个台湾地区最大的电信骨干网也是国内出口流量最大的ISP。CHT另拥有一张TWGate的网络专注国际互联其性质相当于中国电信的CN2。
### **4.日本**
常见ISPNTT、IIJ、KDDI、BBTEC、Telstra、PCCW、BGP.NET
常见IXJPIX、BBIX、EIEHNDEquinix Internet Exchange Tokyo
常见下游Cloudflare、Amazon、Azure、Google、M427、xTom
日本的宽带业务竞争激烈导致ISP提供商不得不杀出更低的价格来吸引客户但是往往事与愿违——用户的口碑却更糟糕了。比如和阿里巴巴合资的SoftBank软银公司创立的ISP服务商——BBTEC看起来是一个不错的选择实际晚高峰网络拥堵体验很差劲试想如果发条消息都要卡半天的话真的是一件很让人抓狂的事情呢。
不仅是家宽商宽乃至服务器机房接入一条ISP线路的成本价格都不菲况且很多日本IDC只对日本本国居民提供服务所以催生了很多代办业务最有名的就是樱花机房的服务器代办服务。往往只有这些对本土开放的IDC才有可能是原生IP可以解锁当地的众多流媒体、游戏和网站很有意义所以哪怕要被代办收取高额的代办费也会有很多有需求的人士会前去购买。
- **NTT**
可直连国内骨干网AS4134、AS4809、AS4837、AS9929、AS58423
日本作为NTT的大本营几乎全国的宽带服务提供商都有NTT的踪迹。因为NTT的骨干网覆盖了日本几乎所有能够覆盖到的地区。
关于日本NTT我想在文中说明的实在太多了限于篇幅我还是精简一下 - -...
NTT和国内ISP互联时间很早在2000年后NTT和当时的网通互联互联出口设在上海和北京并在上海和北京分别建设NTT的PoP节点少数国外ISP将PoP设在国内的案例
值得一提的是但是这是目前国内直连日本NTT延时很低且很稳定的渠道CN2到日本NTT都干不过它根据实测目前NTT-9929的速度基本取决于用户接入的9929的带宽速度。
中国电信163和日本NTT之间的扩容就勤快多了电信还在日本东京设立了PoP方便和日本本土ISP快速互联。听起来很美好是吗但是这不妨碍电信163和日本NTT之间日常大爆炸里面大部分都是被巨量的DDOS流量打崩的
**绝大多数情况下163-东京NTT、163-新加坡NTT两线是163网络所有互联线路中质量最差的网络没有之一**
根据近一个月的监测记录上海电信到东京NTT之间的平均延时周期为半小时在48~295ms之间抖动高峰一小时平均丢包率峰值可达40%高峰一分钟平均丢包率极限情况下达到了惊人的99%,这就导致了高峰哪怕绕美的体验都要强于直连。
联通的169网络早期有2条路线可以前往日本NTT一条是从北京-大阪,另外一条是上海-东京。虽然联通169一直普遍被用户认为国际出口质量很高但是这2条NTT的线路也并非各位读者想的那么美好。
北京联通169 - 日本大阪NTT该线其实最早是网通搭建的。联通收购网通后便把网通的PoP拨给自己使用直至今日我们都可以在NTT在北京PoP IP的rDNS上找到来自历史的证明——
> 129.250.8.26(xe-0.cnc-g.osakjp02.jp.bb.gin.ntt.net)
这里的CNC就是曾经的China NetCom中国网通的缩写osakjp指的就是日本大阪。xe是指骨干网路由使用的是Juniper公司研发的路由每条线为10Gbps端口 。
但是到了现在由于联通也在不断开拓自己的国际市场目前联通也在东京和大阪分别设立了PoP只是目前往北京方向回程依旧在走NTT的北京PoP往上海直接走的是联通在日本自己的PoP了。
经过了最近的一番扩容和优化北方联通169往日本NTT方向也有很大的改善目前暂时停止北京-大阪该线路由,走上海),延时显著降低。虽然去程多绕了一点,但是延时下降了很多,还是可以接受的。
移动作为后来者前往日本NTT最早都是借助香港CMI出国近两年才开通了日本东京的PoP并用上了全新的NCP海缆才得以能够不绕港直连。
但是目前移动到日本NTT都不走NCP而是继续绕香港CMI估计在不久的未来直连后会有更低的延时体验。
- **IIJ**
可直连骨干网AS4134、AS4837、AS58423
中国电信的163与IIJ的互联是通过电信在东京的PoP实现的国内可以通过三大汇聚层轻松访问PoP节点。互联的网络质量远好于和NTT的质量。IIJ是电信163用户造访日本网站最好的线路之一目前已经胜过软银不考虑高峰丢包和延时抖动是性价比之选。
中国联通169与IIJ的互联方式和电信几乎一样但是综合来看要好于163与IIJ互联的质量。提供IIJ接入的IDC价格比较亲民的很多如果不愿意接受软银的高价位的话不妨试试IIJ。另外教育网前往IIJ也会走联通169骨干网出国。
目前移动和IIJ的互联已经通过东京移动的PoP来完成故移动到日本IIJ不再绕香港而是通过NCP海缆直连东京的PoP后与IIJ完成互联上海移动到东京IIJ参考延时为45ms实际上可以做到32ms
综上IIJ是日本地区对我们比较友好的也是价格相较于其他三家比较实惠的一家ISP如果没有太小众化的需求上国内走IIJ的VPS是很省心的选择。
- **BBTEC**
可直连骨干网AS4134、AS4837、AS9929、AS58423
BBTEC软银其实是近几年才被我们注意到的一家ISP在上海地区设有PoP并与电信163和联通169/9929互联。该线路一直被称之为联通到日本最好的线路之一。
想要补充一点的是9929早期和软银并没有直连Peer而是借助4837联通169作为跳板实现的。而近期在路由测试中我们可以清楚地看到软银和9929已经在上海PoP实现互联但是在BGP ToolKit上都未显示2者有任何形式的互联基本可以判断是Private Peer。
电信163到软银延时相比于NTT属实较低但是却同样跑不出什么速度来延时最初是日本御四家里最低的但是后来因为使用人数的增加延时逐渐不如IIJ。
联通169到软银的延时则相对不稳定取决于去程走上海口和北京口通常BBTEC回程经由自己的上海POP与联通互联。尽管联通和软银互联的优势已经不如以前但是目前仍旧是联通到日本最好的线路之一。
联通9929到软银的延时稳定互联速度也取决于用户接入的9929带宽速度。
如今移动已经在日本的东京设立了PoP所以从回程看除了广州移动还是继续走香港CMI其余均在日本就Peer并由移动自己的骨干网负责流量回国承载。目前去程依旧全部绕香港CMI这也导致北方移动延时的升高。总体来说软银对北方移动不友好。
- **KDDI**
可直连国内骨干网AS9929
曾经活在传说中的线路价格昂贵唯一的优势就是低负载延迟一般40ms上下抖动。联通9929速度单线程只能跑到100Mbps左右。
### **5.新加坡**
常见ISPNTT、Singtel、Telstra、StarHub、MyRepublic、PCCW(G)、Cogentco、HE、Tata、CMI、CUG、BGP.NET、SG.GS
常见IXSGIX、EIESGEquinix Internet Exchange Singapore
下游OVH、Cloudflare、Google、Amazon
- **NTT新加坡**
可直连国内骨干网AS4134、AS58453
正如你所见NTT在亚太地区无处不在~ 所以我们一般把NTT视作亚太地区ISP的标杆这已经成为了事实上公认的标准。
在新加坡NTT也拥有巨量的骨干资源轻松连接新加坡所有的本地ISP。NTT也有多条新加坡至日本的海底光缆所有权/使用权所以NTT可以借新加坡作为跳板以此连接马来西亚、菲律宾、印度尼西亚、泰国、越南、缅甸、柬埔寨、印度等国在其后我们也会讨论到这些地区的本地网络情况。
中国电信163与2020年和NTT在新加坡正式建立互联即意味着新加坡NTT从即日起无需绕行日本再与163骨干网互联但是情况变得更加糟糕因为新加坡地区的中国电信163和NTT互联宽带很小所以几乎全天都处于被塞满的状态延时异常偏高丢包率极大因此非常不推荐使用163连接新加坡地区的NTT。
移动的CMI在新加坡有自己的PoP同时在当地就可以和NTT互联因互联宽带很大所以目前没有看到被塞爆的情况移动用户目前访问新加坡地区资源的主流渠道就是通过新加坡PoP。
联通9929和联通169目前都不能直连新加坡NTT请详见日本NTT。
- **SingTel新加坡电信**
可直连骨干网AS4837、AS9929、AS58453
Update: 随着移动CMI Transit在亚太的高性价比的优势被挖掘我们也可以看到大量走CMI的香港/新加坡VPS出现在市场上。这也是目前最具有性价比的大宽带亚太VPS但是目前CMI的峰值流量已经达到其容量极限如果依旧不能大幅度扩容的话CMI在晚高峰的延时和丢包已经呈现显著增长的趋势。
移动为了减轻自己的跨国骨干网压力目前已经开始对于第三方ISP收取更高的Transit费用第三方有些已经采用单向路由的方式来节省成本。对于SingTel来说大陆->新加坡的这部分流量要远大于新加坡->大陆的流量,而现在拥堵的也主要是新加坡->大陆的这部分流量所以目前SingTel已经断开了往大陆方向移动在新加坡的直连改走更加通用的NTT。不过目前移动对自家网络CMI和NTT的质量部署了较为严格的限速策略导致延时、丢包和速度表现均不佳。
联通的169在这里把“稳定”两个字表现的淋漓尽致网络对于亚太的支持绝对可以称为老二在新加坡地区联通和SingTel有直接Peer故整体延时和移动几乎一致只要回程不绕路使用SingTel也很棒目前联通也是唯一SingTel双向新加坡直连的国内ISP。
但是对于中国电信163来说因163网络和SingTel在世界各地都没有Transit/Peer这就导致前往新加坡SingTel之前数据先会被发送至美西Tata/Telia但是目前电信163和美西的互联早就已经满了其实不只是163CN2也满了所以速度上来说非常糟糕加上严格的动态Qos策略使得延时和丢包雪上加霜。
需要补充一下的是新加坡SingTel是全新加坡最大规模的ISP在非大陆地区的国际互联上面SingTel还是有着相当大的优势如果您在新加坡的话选择SingTel还是最佳选择。
- **Telstra Global新加坡**
可直连骨干网:这都香港直连了,还要什么自行车!
由于接入Telstra的VPS大多在日本、澳大利亚、新加坡而Telstra和国内御三家主要的Peer在HKG香港所以速度肯定差不多的啦~
- **StarHub**
可直连骨干网AS4134、AS4837、AS58453
StarHub是当地一大本土运营商提供宽带服务因为规模较大常用来解锁新区流媒体的用途。
既然三网都在新加坡和StarHub有Peer那么是不是就代表着StarHub到我们国内的表现非常优秀呢实际路由表现并没有读者想象中的那么好。电信163去程是直连但是回程是绕路的联通169回程是直的但是去程绕了日本NTT。
只有移动比前两者好一些通过新加坡EIE和Starhub互联较于前者这种的优势在于IX中心互联非常方便对接IX内的所有网络但是容量可能有限难免高峰不爆炸。
- **MyRepublic**
MyRepublic也是当地一大本土运营商通常被用来解锁新区流媒体的用途。但是MyRepublic没有任何和国内御三家的互联所以最好使用移动CMI或者CN2中转。
中国电信163、中国联通169网络走NTT移动走新加坡EIE至StarHub再转MyRepublic。
- **Cogentco**
可直连骨干网AS4837
近日中国联通169在新加坡地区和Cogentco开通了新的Peer使得很多亚太地区Cogent单栈的宽带/服务器都焕发了新的生命通过联通的169网络可以做到广州联通到新加坡Cogentco 46ms的延时成绩。
- **Tata**
可直连骨干网AS4387、AS9929(从AS10099接入
Tata在新加坡与联通存在peer可经由AS4837直连广州入口目前已知经过新加坡Tata到联通的线路几乎都是孟买一带的机器例如Linode、阿里云、腾讯云等
### **6.马来西亚**
常见ISPTMNet (unifi) 、TIMEdotCom (TIME MY)、EBB.MY (Extreme Broadband) 、Allo Technology (City Broadband) 、Maxis Communications Bhd 、Celcom Axiata Berhad 、PCCW(G)、HE、Tata、CMI
常见IXMYIX (The Malaysia Internet Exchange) 、JBIX (Johor Bahru Internet Exchange (JBIX))
下游Cloudflare、OVH、MSCHosting (Exabytes)、U Mobile 、DiGi Telecommunications (Telenor)、MYREN (Malaysian Research & Education Network)
马来西亚所有的ISP几乎都对中国移动友好有些是在 Equinix SG 转一圈后接入 CMI , 有些是接入 NTT 新加坡 后到 NTT HK 再到 CMI HK
- **TMNet (unifi)**
TMNet (unifi) , ASN 为 4788 , 是全马来西亚数一数二的ISP , 几乎垄断马来西亚近70%的固定宽频市场,常用来解锁马区流媒体的用途
可直连骨干网: AS4134 中国电信
中国联通会从新加坡接入 HE.Net 后绕到美国HE.Net 再接入中国大陆
中国电信通过TM接入中国电信日本后接入中国大陆
CN2 经由Singtel SG 后跳入广州
中国移动先是到 Equnix SG 再到 CMI 再到 AS9808
和 TIMEdotCom (TIME MY) 的互联很烂,经常出现晚高峰 100ms + 的情况
国际网络质量偶尔[抽风](https://forum.lowyat.net/topic/5149798)
和 OVH 新加坡拥有peering
- **TIMEdotCom (TIME MY)**
TIMEdotCom (TIME MY) , ASN 为 9930 , 是全马来西亚除 TMNet (unifi) 第二大的ISP提供的家宽配套无论是在速度还是价钱都吊打 TMNet(unifi) , 双向500Mbps带公网IP家宽只需210+人民币,在马来西亚算很便宜了,目前市面上没看见 TIMEdotCom 的VPS不过可用来解锁马区流媒体
可直连骨干网:
- IPV4 : N/A
AS9808 会经过:
1. NTT SG - NTT HK - CMI HK - 9808
2. HE.NET KL - HE.NET SG - Equinix SG - CMI Guangzhou - 9808
163 骨干网和 TMNet (unifi) 情况类似,会转发到 Tata :
Tata SG - Tata JP - Tata US - 163 骨干网
CN2 会经过 HGC HK 接入大陆 CN2
AS4837 都会经过 Singtel
- IPV6 : AS4134
仍不确定 TIME 跟 中国电信买了多少容量
可是通过路由可以发现是直接从马来西亚 TIME 骨干网跳入中国电信新加坡 PoP , 后直接到中国大陆电信骨干网
AS4837 : 去程经过 NTT SG - NTT 日本 - 中国大陆
目测回程绕美 延迟可达200ms +
其他ISP基本都半斤八两:
- Maxis 上 AS4837 同样走 Singtel
- Digi / U Mobile 靠AS4788 作为上游所以线路基本和AS4788一致
- Allo Technology 最大上游为 Cogent , 也有接入 TMNet , 不排除部分线路走 TMNet 过 , IPV6 最大上游为 HE.Net
- EBB.MY 基本靠 HE.Net 做上游,移动/联通/电信都不讨好,不过可以直接接入 CN2
> 总结马来西亚ISP**基本都对中国移动友好****极少ISP (比如 Maxis / TIMEdotCom) 在连接中国联通时走的是 Singtel 直连**不过延迟90+ , 有可能**回程绕日本**市面上目前也就 TMNet (unifi) VPS , 仍未见到类似 TIMEdotCom / Maxis 的VPS
### **7.韩国**
常见ISPKT、SKT、LG 绕路的ISP:NTT、PCCW、Telstra Global 绕日绕港绕新加坡 故不测试)
常见IXKINX
常见下游Moack、Oracle、Cloudflare、Amazon、Azure
韩国本土网络发达除了三大ISP以外还有地区性ISP大陆地区前往韩国主要走TPE、APG、APCN-2、NCP四大海缆。
国际路由差强人意但靠着CDN也足够应付。但到中国大陆的带宽与路由不尽人意绕路与直连汇聚层日常性堵塞层出不穷丢包与抖动比较严重虽然没有到163-NTT那么夸张
同时韩国的互联网管理相对严格,购买上比较麻烦。
- **KT**
可直连骨干网AS4134、AS4809、AS4837、AS9929、AS58453
KTKorea Telecom韩国最大电信运营商市场占有率排名第一。
目前电信163/CN2和韩国KT之间的互联是通过APG海缆完成的因为APG海缆只在上海有登陆所以目前前往韩国KT都是走上海出口。需要注意的是无论是电信163还是CN2和韩国KT的互联宽带均有限高峰汇聚层没炸先Peer炸了也是经常发生的事情。
电信163至韩国KT的速度在Peer不被塞满的情况下单线程能跑100-200Mbps晚高峰受限于汇聚层和Peer宽带的双重因素影响速度受限比较严重。CN2虽然不用太担心汇聚层的拥塞问题但是目前的Peer宽带依旧是比较主要的速度和延时等稳定性制约因素。
联通9929与KT有互联同样也是走上海出口。高峰期几乎无丢包延迟极低单看极限最低延迟逼近沪韩IPLC可惜经常抖动虽然幅度不超过5ms。速度方面也属于跟日本ISP到9929一样KT到9929的速度取决于用户接入的9929带宽速度。近期似乎扩容/更新设备了,抖动大幅降低。
根据测试。KT-广州移动120.197/183.240段)高峰期速度非常不稳定,回程路由绕港。
- **SK Telecom**
可直连骨干网AS4134、AS4809、AS4837、AS58453
SKT可能从某种意义上知名度比KT高SK Telecom是韩国最大的移动网络业务运营商。
实际上提供网络服务的是SKT的旗下公司SK Boardband。这一点可以从ASN信息中看出。
SK - 163 答案很简单走上海出口直连但是会BOOM包括163+...
SK - CN2 非常稳定有Peer任何时段基本没有丢包但看起来绕港速度不稳定。
SK - CU169(上海)时延会在高峰期会振荡,速度也飘忽不定,但配合单边加速还算可用。
CMI与SK Boardband在香港Peer移动经香港到CMI可以与其直连到广东移动的速度飘忽不定。
- **LG**
可直连骨干网: AS4134、AS4809、AS4837、AS9929
韩国第三大ISP,现名LG Uplus曾用名“Intergrated LG Telecom”。LG的电信发展历史基本上就是一场收购史……
LG Uplus 由三家LG子公司合并而来分别是LG DACOMLG Powercom和LG Telecom。其中LG DACOM和LG Powercom又是收购而来。原来的LG Powercom负责运营民用网络从韩国电力收购而来LG DACOM负责国际通信业务也就是LG的国际路由上会出现DACOM的原因。
DACOM全名为DataCommunication由韩国政府牵头LG与三星共同投资建设但拥有独立经营权的ISP后因为LG额外注资增持股份LG完全接管DACOM。而LG Telecom则是LG自己独自投资建设的移动网络。
LG到联通169上海直连走上海出口配合单边加速高峰期速度不错。但ICMP丢包率特别高。
LG到联通9929是直连同样走上海出口。但奇特的是虽然延迟也很低速度却非常不稳定隔三差五就突发性的延时起飞但是正常的时候又十分平稳几乎没有抖动可速度依旧不尽人意。
### **8.越南**
常见ISPVNPT、FPT
- **VNPT**
可直连骨干网AS4134、AS4837、AS58453
作为全越南最大的电信ISPVNPT拥有着全越南最大的骨干网和国际出口但是一般很少有人会拿越南的宽带做流媒体解锁服务。
虽然电信163和VNPT互联广州出口胡志明市PoP但VNPT的网络质量本身就不是很可靠导致高峰没有速度乃是常态。最近VNPT还把回程的163直连路由改成绕路了到香港后转PCCW但PCCW到电信现在默认会绕美使得电信163和VNPT的网络单向互联意义不大。
电信163也和VNPT在香港地区以CTG中国电信国际的名义互联但少有可以走到这条线上的而且回程依旧绕PCCW导致目前两条与VNPT互联的线路都是单向路由。
电信163最神奇的地方莫过于并不是所有的VNPT IP段都会走上述2条互联也有可能会走美西的Tata亦或是走欧洲的Cogent借助胡志明的BICS接入VNPT。
联通169到VNPT也通过胡志明市的PoP互联但是和电信163一样也是单向互联回程绕PCCW。
移动CMI在香港和VNPT互联常规操作感兴趣的可以翻翻香港地区的ISP是怎么和移动互联的就知道了。
- **FPT**
可直连骨干网AS4134、AS4837、AS58453
如果说VNPT到国内御三家都不怎么友好的话那么FPT应该是到越南地区非常友好的ISP了。
电信去程163会走联通的网络去和FPT互联回程走香港CTG回国但是宽带很小经常爆炸不爆炸的时候速度很快期待以后的扩容。
因为FPT接入了CUG所以联通169到越南FPT走的是AS4837->AS10099->FPT虽然CUG很可靠但是依旧受限于FPT接入宽带的容量晚高峰几乎天天爆炸这个只能等FPT扩容。
移动CMI和VNPT一样都是常规互联晚上也炸的很厉害。
**我后期还会在这里添加日本、印度尼西亚、菲律宾、泰国、印度、孟加拉国、柬埔寨、泰国、尼泊尔等国家。**
***
## 欧洲/北美地区
欧洲/北美的网络情况跟亚太差异比较大。欧美的中小ISP大部分依靠的是IX互联或者机房托管的混合网络接入。
虽然商业网络的价格比亚洲地区便宜但至少对中国用户来说很少再回程路由中遇见欧美的Regional T1或者高质量T1 ISP。
比如说在欧洲的Orange(前身法国电信France Télécom,AS Rank 11),Vodafone (总部在英国,AS Rank 12),Deutsche Telekom(德国电信AS Rank 24),北美的ATT(AS Rank 20) ,Verzion(AS Rank 21) ,Sprint(AS Rank 26)。题外话BT(英国电信)反而是Regional T1,AS Rank比中国电信还低。
### **1.欧洲德国**
- **DTAG**
可直连骨干网: AS4134、AS4837、AS9929
Deutsche Telekom AG 德国电信德国第一大ISPT1级。旗下移动运营商T-mobile相比于DTAG更加知名。
DTAG于AS4134和AS4837均有peer。同时也是AS9929上游。但延迟均200+起跳。
电信163普通家宽会被强制丢包而163plus能保证相对稳定延迟与相对较低的丢包
联通169则取决于汇聚层是否拥塞。非拥塞状态则能保证网络质量。但是只限于北方地区的联通如河南/山东等)。
南方地区的联通如上海将会被无慈悲的绕美由DTAG转发Level3。
AS9929依旧稳定发挥甚至延迟优于AS4134 AS4837,但速度很勉强几乎稳定80Mbps。
- **Cogent Communications**
Cogentco由于在Traceroute上的细节写的过于清楚明白以至于有一部分以为跳数越多越差人觉得Cogentco不行。虽然它也确实不太行...
可直连骨干网AS4134、AS4837、AS9929、AS58453。
Cogentco,联通9929真正的互联主力……几乎绝大部分的欧美线路到9929都会被Cogentco宣告。以至于在欧洲会出现回程不走DTAG硬是跑Cogentco
外加联通9929的NOC基本不会主动调整欧美路由。速度十分玄学单线程在50Mbps摇摆多线程却接近跑满。
### **2.美国洛杉矶&圣何塞**
洛杉矶和圣何塞是美西重要的面向亚太地区的互联网PoP中心TPE海缆多从此处2点接入。中美之间的互联占据了出境流量很大的一部分也是电信163出国的主要路径。
- **HE**
HE全称为 Hurricane Electric飓风电气目前是坐拥全球以Peer数量计算的最大IPv6骨干网的ISP骨干网自治编号为AS6939。HE也提供免费的IPv6 Tunnel以方便IPv4单栈的用户能够无障碍地访问IPv6网络。
HE的发展思路一直是竭尽全力和世界上更多的ISP Peer尽管获得了非常多的本地互联但是因自身前期在亚太骨干网投入不足导致和一些ISP对等宽带过小、跨洋传输场景下的宽带传输速率有限HE也一直在努力扩容可惜仍旧有较大缺口。
我们看到的亚太地区香港、新加坡的低价VPS产品线几乎都一致地选择了HE作为唯一的互联网接入而且接入的宽带并不大平均1Gbps。但是哪怕是HE这样的ISP在亚太地区的BGP Transit也颇为昂贵这些商家为了能够有所盈利在超低的VPS价格上宽带上面必须大幅超售这些反而给低端用户群体带来了十分糟糕的用户体验很多时候这些VPS访问外网速度慢不是HE的问题而是IDC没有购买足够的宽带导致。
作为对等节点极多的HE来说IPv6网络下和中国大三ISP均有直接互联也是当下国内IPv6网络跨国的主要对等ISP为推动全球IPv6互联中扮演着非常重要的角色。
可直连骨干网AS4134、AS4837、AS58453
电信163和HE在洛杉矶有1020G的互联平时鲜有出现较大的延时抖动但是速度限制较为严重。
联通169和HE的洛杉矶互联通常被视为在廉价互联里面很具有性价比的相比于联通169和GTT的互联和HE的互联质量就要好很多很多用户也在尽可能选择更价廉物美的选择。
CMI与美西的互联一向较差并不具有较好的连通性再加上HE和CMI的互联本身就炸的比较厉害此条线路不推荐移动去尝试。
- **GTT**
GTT前身为Global Telecom and Technology自1998年成立以来在跨国电信业务上耕作至今。
可直连骨干网AS4134、AS4837、AS58453
联通169在美西较大地依赖GTT的互联导致延时相比正常美西延时高很多速度并不乐观。
电信163和GTT的互联却是出乎意料的好根据SmokePing的结果电信163和GTT的互联全天几乎不丢包完全受限于汇聚层是否通畅。这就意味着只要使用高Qos的电信宽带就可以获得较好的速度。
- **Telia**
Telia是瑞典最大的电话和电信通讯公司前身为瑞典电报局及芬兰电讯。现更名为Arelion但目前在路由上的名称依旧是Telia。
可直连骨干网AS4134、AS4809、AS4837、AS58453
Telia在美国、欧洲都有和电信163互联总体来说是很中规中矩的线路
- **Cogent Communications**
可直连骨干网AS4134、AS4837、AS9929、AS58453
跟欧洲情况差不多。
电信163在美西较大程度上依赖Cogentco的互联爆炸的几率较高。
- **Verizon**
可直连骨干网AS9929
联通9929与Verizon的互联一言难尽延迟不是最优单线程速度也不是最优。高峰期单线程速度在50-70Mbps震荡。而多线程速度倒是能跑满非常的玄学。
有时候其他北美ISP到联通9929需要经Verizon转发而被转发的速度就很难保证了。
***
## 非洲地区
### **1.肯尼亚**
常见ISPLiquidTelecom
可直连的骨干网AS4134、AS4809、AS58423
LiquidTelecom在肯尼亚设有非洲国际交换中心后与中国电信签署合作关系目前中国电信在肯尼亚设有一处PoP同时接入了163和CN2网络和LiquidTelecom都有Peer。
LiquidTelecom也是非洲北部最大的ISP在非洲拥有100GE的骨干网可以说是非常强了。电信163前往该PoP需要先在新加坡的163 PoP中转后前往非洲。在世界各地有自己的骨干网以及PoP这就是为什么中国电信现在越来越被认可为Tier 1的原因。
虽然听起来特别厉害但是实际上163网络到肯尼亚直连很差不过这并不是因为LiquidTelecom导致的电信的163汇聚层拉垮是主因。
从肯尼亚CN2的表现严格的来说是达到及格线的但是价格昂贵一般很少有人会去选择那么偏僻的CN2我也只是找到了没几个段的肯尼亚CN2 IP段通过SmokePing检测观察许久得出来的结论。
联通和移动都没有和LiquidTelecom直连所以都绕路。
### **2.南非**
在南非一共有三大IXJINX、CINX、DINX约翰内斯堡互联网交换中心、开普敦互联网交换中心、德班互联网交换中心 这里我们主要讲JINX别的基本和我们的御三家无关。
我们可以看出电信的非洲地区是下了功夫的JINX也设有电信的PoP同时接入AS4134和AS4809这个网可能听说的人比较多Misaka的南非约翰内斯堡的服务器网络就是接入了JINX和电信CN2互联的。
说实话,因为联通、移动没有想过在非洲布局,所以这个地区基本没他们什么事...
***
## 中东地区
### **1.阿联酋**
常见ISPdu.ae
可直连的骨干网AS4134、AS4809
[du.ae](http://du.ae/) 是当地一大电信ISP骨干网覆盖全国在阿联酋的迪拜电信设有PoP同时接入电信163和CN2。
电信依旧是通过新加坡的PoP中转以连接阿联酋根据Ucloud的阿联酋地区长达一个月的TCPPing数据该地区163网络要比南非肯尼亚LiquidTelecom稳定CN2可以实现132ms的低延时。
***
## 参考资料
- [local-ISPs-to-CN-report](https://github.com/sjlleo/local-ISPs-to-CN/blob/main/report_zh_CN.md)
**此文采用CC BY-NC-SA 4.0协议,可自由摘取片段用于非商业用途分享。**

View File

@ -0,0 +1,162 @@
+++
title = "Network的艺术:搜索引擎与爬虫"
date = 2024-02-11
[taxonomies]
tags = ["网络艺术"]
+++
前言 搜索引擎原理可以简单分为三个过程:爬行,索引,排名。
<!-- more -->
## 一.历史
1990年当时人们依赖 ftp 协议共享文件资源。必须一字不差地输入文件名称,才能得到一个能下载该文件的 ftp 地址。
1995年风云一时的 Yahoo 诞生。当时 Yahoo 利用的是人工编辑导航目录的方式来给用户提供服务。但随着互联网上的 web 网站越来越多,传统的人力收录形式逐渐不再适用。
1998年全球最大的搜索引擎 Google 成立,一种查找网页的自动化程序也开始被应用,这种程序就叫爬虫。
## 二.爬虫
搜索引擎原理可以简单分为三个过程:爬行,索引,排名。
**爬行**
爬行是谷歌爬虫抓取并解析页面HTML的过程。这个时候爬虫看到的类似纯文字版的网页快照。也就是未执行CSS和JS的页面。这个时候谷歌会记录网页的一些相关信息比如标题关键词原描述文本内容链接等。
对于新站其实最需要解决的就是收录。互联网也就是一张由无数链接形成的大网蜘蛛spider通过跟踪链接访问页面当发出页面访问请求之后服务器会返回HTML代码。蜘蛛会将采集到的程序收入原始页面数据库。
蜘蛛的爬取方式分为两种:
**纵向抓取**:蜘蛛在网站上发现一个链接,就会沿着这个链接一直深入,发现一个,抓一个,直到无法再找到新链接。
**横向抓取**:蜘蛛在网站上发现一个链接,先将第一层级的链接全部爬取完,再进入第二层级抓取,直到爬取完网站的最深层级。
网站的纵向抓取和横向抓取往往是同时进行的理论上只要给予足够的时间那么蜘蛛就会将网站上的所有链接全部抓取。但是由于资源的限制我们在查看蜘蛛的crawl记录时就会发现其实很多页面并没有被爬取。
既然蜘蛛没有办法爬行所有页面,那么那些页面会优先抓取呢?
- 高DA和高PA页面即网站和页面的权重高蜘蛛就会优先爬取
- 更新时间:页面更新频繁会吸引蜘蛛抓取
- 导入链接:高权重的导入链接,这也就是外链要尽量选择高权重网站的原因
- 与首页距离:层级距离首页越近,权重越高,越可能被蜘蛛爬取
**地址库**
网络上的资源非常丰富和繁杂,为了节省资源,搜索引擎会建立一个地址库,将已经发现但是并没有抓取的页面和已经抓取的页面记录在里面。
地址库的网址往往有以下三种来源:
- 人工录入的种子网站
- 蜘蛛爬取页面后解析出网址,如果不存在,就录入
- 通过站长工具提交网址,例如 google search console
**索引**
在索引(indexing)过程中,谷歌会将被抓取的页面内容组织起来,形成一个巨大的索引库。谷歌的 Caffeine 索引机制又会对网页进行渲染执行CSS和JS从而更好地理解你网页的内容。
- 提取文字:搜索引擎会提取页面中的可见文字,以及包含文字信息的代码。如 meta 标签alt 属性,锚文本等
- 分词:例如对于 Where can I buy a high quality table ,那么 a high quality table 就会被视为一个词,而不是 buy a high 。对于不同国家的文字,每个搜索引擎的分词方式都是有区别的。
- 去停止词:不论英文还是中文都会经常出现一些对于页面主体内容没有多大影响,但是出现频率较高的词,例如语气词,介词,副词,感叹词等。搜索引擎会在建立这些页面之前去除这些词。
- 消除噪声:页面上会存在一部分内容对于确认页面主题并无帮助,例如版权声明,导航等。这些内容也会在存入索引之前被清除。
- 去重:因为搜索引擎并不喜欢重复的内容,所以对于重复度过高的页面也是会被清除的。因此我们网站的页面内容一定要尽可能的稀释重复度。
- 正向索引:经过上述步骤之后,搜索引擎得到的就是可以反应页面主题的内容,他会记录每个关键词在页面上出现的频率,格式,位置,然后将这些数据存储在索引库中。
- 倒排索引:正向索引是将页面对应到关键词,倒排索引是将关键词对应到页面。这样用户在搜索的时候,可以迅速确定页面
- 链接关系计算链接关系计算是针对内链和外链维度包括链接的数量导入链接权重。Google PR 就是这个计算结果的体现。
- 特殊文件:谷歌不仅可以抓取 html 网页,对于 PDFTXTWord 这种文字占比例较高的文件也是可以抓取的。
**排名**
排名过程其实在爬取和索引的时候就开始了。到了索引阶段,谷歌会为网页计算一些指标,作为排名算法的初始数据。当用户搜索问题时,谷歌会进行语义分析,理解用户搜索意图,并执行排名算法,根据页面相关性得分为每个页面排序,最终形成搜索结果页面。
搜索词:对用户输入的搜索词进行去停止词处理,搜索指令处理
文件匹配用户可能搜索的是网页也可能是PDF或者JPG图片。
初始子集选择:因为在这个阶段,能够匹配的网页数量是巨大的,所以会根据页面的权重首先选出一个子集
相关性计算(最重要的一步):
- 关键词常用度:越常用的词对于搜索词的用处越小
- 关键词密度:密度越大,该页面的相关性越高,但是现在这个因素对于页面的排名已经不太重要。
- 关键词的位置和形式粗体H标签都表明这是较为重要的关键词位于段落开头的关键词比段尾的关键词拥有更高的权重所以建议将搜索量最高的关键词放在段首其余关键词较为自然的分布的文章中。
- 关键词匹配度:能够完整的匹配用户的搜索词,证明页面的相关性越高。
- 页面权重页面权重和很多因素相关例如导入链接DA域名权重等。
- 排名过滤:现在已经基本得到了关键词的排名,但是对于曾经有过作弊为行为的网站,谷歌会对其 ranking 进行下调,以示惩罚。
- 页面显示排名确定后搜索引擎会调用页面的meta标签也就是 title 和 description 。
- 搜索缓存:对于重复搜索词,搜索引擎是会将结果进行缓存的。
- 搜索日志搜索引擎会将用户的搜索词点击网页ip,搜索时间都进行记录,便于判断搜索结果的质量,调整算法,预测搜索趋势等。
## 三.SEO与搜索技巧
在商业的驱动下,催生了一个职业叫搜索引擎优化,通常会简称为 SEO 。
在搜索结果中你会发现很多网站明明不提供有效信息却排名靠前。那是因为它们通过掌握搜索引擎排名的规律利用一些作弊手段“骗”过了程序。例如关键词堆积、隐藏链接、PR劫持、模拟点击、模拟发包等。这些在业内被叫做黑帽SEO。
不过虽然你无法改变算法,但如果想让自己的搜索结果更干净,其实也有一些搜索技巧可以使用。
例如,
- 精确搜索:“关键词”,利用双引号 ,这样关键词不会被拆分
- 模糊搜索:利用*号代替文字
- site查找指定网站的所有页面site:网站链接
- 关键词site查找指定网站的关键词关键词 site:网站链接
- 关键词A +关键词B同时搜索多个关键词+前面记得加空格
- 关键词A -关键词B排除搜索结果中不想看到的内容-前面记得加空格
- intitle标题中含搜索词的内容intitle:关键词
- intext正文中含搜索词的内容intext:关键词
- inurlurl网址中含搜索词的内容url:关键词
- filetype搜索指定格式的文件关键词 filetype:格式后缀
- 叠加使用方法:比如排期搜索结果中不想看到的网址,搜索词 -site:网站链接
## 四.补充
- 什么是 robots.txt
robots.txt 文件可以指定那些我们不希望被爬虫访问的页面,比如,管理页面、登录页面或者其他不重要的页面等。这样做的原因是,一般来说搜索引擎分配给每个网站的爬行预算是固定的,如果我们将预算浪费在不重要的页面,那么相对应的,我们那些重要的页面,比如产品分类页,产品详情页,被收录的概率就会变低。下方是淘宝的 robots.txt
```
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
```
- 什么是站点地图
站点地图可以列出网站上所有的页面,比如产品分类,产品详情页,新闻博客页等。我们将站点地图提交给搜索引擎,可能会帮助爬虫更快地发现我们的网站。谷歌是在谷歌站长后台提交站点地图,其他搜索引擎同理。

View File

@ -0,0 +1,296 @@
+++
title = "Network的艺术:下载技术的历史"
date = 2024-02-09
[taxonomies]
tags = ["网络艺术"]
+++
前言 下载就是将我们所需要的文件数据通过网络从拥有该文件资源的计算机上传输过来并保存到我们的计算机上供我们使用。本系列将详细讲述各种常见网络下载技术的原理包括HTTP,FTP,BT等等。
<!-- more -->
下载技术的历史可以追溯到计算机网络的早期发展阶段。以下是下载技术的一些历史里程碑:
**早期网络时代1960s - 1980s**
在计算机网络的早期阶段下载技术并不像今天这样普及。主要的网络是由军方和学术机构使用的封闭网络例如阿帕网ARPANET。在这个时期文件通常通过物理介质如磁带、磁盘或纸带传输而不是通过网络进行下载。
**BBS时代1980s - 1990s**
随着电子通信的发展出现了电子公告板系统BBS。BBS是一种允许用户通过拨号访问的系统用户可以在BBS上发布和下载文件。下载文件的过程通常是通过模拟调制解调器将文件从BBS服务器下载到个人计算机上。
**Internet时代的起步1990s**
1990年代初随着互联网的普及出现了许多文件下载协议和工具。其中最知名的是FTP文件传输协议它允许用户通过网络下载文件到自己的计算机上。FTP是早期互联网上常用的文件传输方式之一但它需要用户在计算机上安装专用的FTP客户端软件。
**万维网时代的兴起1990s**
随着万维网World Wide Web的诞生HTTP超文本传输协议成为了互联网上最流行的协议之一。HTTP允许用户通过标准的Web浏览器直接从Web服务器上下载文件。这一时期也出现了许多下载管理器和加速器例如IDMInternet Download Manager用于提高文件下载的速度和管理。
**P2P文件共享时代2000s至今**
P2P点对点文件共享技术允许用户直接从其他用户的计算机上下载文件而不是从中央服务器下载。著名的P2P协议包括BitTorrent和eDonkey等。这些技术使得文件下载更加分布式并且提供了更高的下载速度和可靠性。
**流媒体下载和订阅服务2000s至今**
随着互联网带宽的增加视频和音频流媒体下载成为主流。诸如Netflix、Spotify和Apple Music等订阅服务提供了通过互联网访问大量内容的途径用户可以通过流媒体服务下载并观看/收听内容,而无需等待完全下载。
## **一.HTTP 下载**
HTTP全名 ``HyperText Transfer Protocol``,超文本传输协议。
HTTP协议是一种无状态的、应用层协议用于传输超文本数据如HTML、图片、音视频等。
HTTP下载的基本原理
1. **浏览器请求**用户在浏览器中点击下载链接或按钮时浏览器会向服务器发送HTTP请求请求下载指定的文件。
2. **服务器响应**服务器收到下载请求后会根据请求中的信息找到对应的文件并将文件内容打包成HTTP响应发送给客户端。
3. **传输过程**:一旦浏览器接收到服务器的响应,就开始从服务器下载文件。这个过程可以简单地分为以下几个步骤:
- **建立连接**浏览器与服务器之间建立TCP连接。
- **请求文件**浏览器发送一个GET请求请求下载文件的内容。
- **接收文件**服务器将文件以HTTP响应的形式发送给浏览器。
- **下载文件**:浏览器接收到文件数据,逐步将其存储到本地硬盘中的临时文件中。
4. **下载完成**:一旦文件的所有数据都被下载到本地,浏览器就会将临时文件转移到用户指定的下载文件夹中,完成文件的下载过程。
在整个HTTP下载过程中浏览器会根据服务器返回的HTTP响应头中的一些信息来确定如何处理下载文件例如文件类型、大小、以及是否支持断点续传等。此外如果用户使用的是下载管理器或浏览器插件这些工具还可以提供更多的下载管理功能如多线程下载、下载加速、断点续传等。
当我们点击一个链接时,浏览器会检查链接指向的目标是什么类型。如果是浏览器支持的类型,比如一个 HTML 文件,也就是另一个网页,则会跳转到新页面。
如果是不能直接由浏览器打开的文件类型,比如一个 EXE 格式的软件包这时就会调用浏览器的下载机制开始下载。如果装有下载工具的浏览器插件浏览器则会将下载任务转交给下载工具进行等待一段时间下载完成之后这个文件就会出现在我们的下载文件夹中。这就是最基本的下载HTTP 下载。
## **二.拨号上网**
上世纪 90 年代,中国互联网的发展初期,在当时计算机上网只能通过电话线路,经由调制解调器来进行,因此称作拨号上网。
拨号上网的基本原理:
- **调制解调器Modem**:在拨号上网时,计算机通过调制解调器将数字数据转换成模拟信号发送到电话线路上,以及接收从电话线路传来的模拟信号并将其转换成数字数据。调制解调器是连接计算机和电话线路的关键设备。
- **拨号过程**用户在计算机上设置拨号连接输入拨号号码通常是ISP提供的拨号号码计算机通过调制解调器拨号建立连接。拨号过程中调制解调器会发送一系列信号给拨号接入点以建立与网络服务提供商ISP的连接。
- **网络连接**一旦拨号成功计算机与ISP的服务器建立起网络连接。在拨号过程中计算机会获取到一个IP地址这个IP地址是计算机在网络上的唯一标识符用于进行数据传输。
- **数据传输**:一旦网络连接建立,计算机就可以通过调制解调器在电话线路上发送和接收数据。数据传输可以是双向的,用户可以浏览网页、发送电子邮件、下载文件等。
- **电话和上网的冲突**:在拨号上网的过程中,电话线路和上网信号不能同时传输,如果在上网过程中接听电话,网络连接会中断。这是因为电话和上网信号共用同一条电话线路,无法同时传输。
- **断线重连**如果网络连接因为电话中断或其他原因而中断用户需要重新拨号连接到ISP的服务器继续上网。这种中断和重连过程是拨号上网时常见的情况。
拨号上网的速度较慢,且容易受到电话和上网信号冲突的影响,因此在宽带互联网普及后逐渐被淘汰。
当时的网费不是按年收取的,而是与打电话一样按时计费,费用大约为每小时 20 元,而且这还是房地产未爆发之时的 20 元。
当时最高网速为 56 kbps也就是 7 KB/s一首 MP3 音乐大约为 4 M需要下载 10 分钟。但如果是一个红警 2 的游戏,约 200 M那就需要下载 8 小时。8 小时的网费 160 元,而一张盗版光盘只需要 5 元。因此,虽然光盘现如今已经被沉入了历史长河,但它依然留存在老一代游戏玩家心中,是他们无法抹去的一份美好记忆。
下载时间长、网费贵,最要命的是电话信号和上网信号不能并行传输,接听来电会中断网络传输,然后你就必须重新下载。
## **三.断点续传**
拨号上网的电话和网络不能同时进行的致命问题,在几年后随着 ADSL 宽带技术的出现,得以解决。但这并不是说,下载就不再会被中断了。电话是不怕了,但死机、停电、软件崩溃、服务器当机等等,还有无数种暂停下载的情况。
断点续传的基本原理:
- **HTTP Range和Content-Range头字段**为了支持断点续传HTTP 1.1标准在1999年引入了Range和Content-Range头字段。这些字段允许客户端指定要请求的文件的特定范围并且允许服务器指定响应的内容的范围。
- **客户端支持**下载工具需要能够识别并利用HTTP Range头字段。当下载中断时下载工具会将已经下载的部分保存到本地硬盘上同时记录下已下载的字节数和文件的URL等信息。
- **中断处理**如果下载过程中出现网络中断或其他原因导致下载中断下载工具会保存当前已下载的部分并在下次恢复下载时利用HTTP Range头字段向服务器发出请求请求从中断处继续下载。
- **服务端支持**服务器需要能够处理带有Range头字段的请求并能够正确响应所请求的文件的特定范围。服务器根据客户端请求的字节范围返回相应部分的文件内容并且在响应头中包含Content-Range字段指示所返回的文件部分的范围和总大小。
- **续传合并**:一旦下载工具完成对剩余部分的下载,它会将先前保存的部分和新下载的部分合并成完整的文件。这通常涉及到文件操作,如将两个文件的内容按顺序拼接到一起。
然而要实现断点续传客户端和服务器双方都必须支持相关的HTTP头字段和逻辑否则无法进行断点续传。
## **四.多线程下载**
互联网早期,上网用户少,但内容提供商更少。因此提供下载的网站一般都是满带宽运行的。而且在晚上的高峰期,能分给每个用户的带宽就更少了。因此大多数用户的下载速度都很低,远低于自己的网络带宽,这对于按时计费的上网环境来说,就是一种极大的浪费。因此人们又希望能有一种可以提升下载速度的方法。
多线程下载``Multi-threaded Download``是一种通过同时启动多个下载线程来加快文件下载速度的技术。以下是多线程下载的基本原理:
- **并行下载**在开始下载任务时下载工具会同时启动多个下载线程每个线程负责下载文件的不同部分。例如如果设定了5个下载线程那么下载工具会将文件分成5个部分每个线程负责下载其中的一部分。
- **断点续传**每个下载线程都利用断点续传技术向服务器发出请求并在HTTP请求中指定自己要下载的文件的起止位置。服务器根据这些请求返回相应的文件部分而不是整个文件。
- **并行下载过程**:各个下载线程同时下载文件的不同部分,因此可以充分利用网络带宽资源,加快文件的下载速度。由于每个线程独立工作,所以它们之间互不影响,即使某个线程下载中断,其他线程仍然可以继续下载。
- **文件合并**:当所有下载线程都完成了各自部分的下载后,下载工具将这些部分按顺序合并成完整的文件。这通常是在本地文件系统中进行的简单文件操作,将各个部分的内容按顺序写入到一个文件中。
- **提升下载速度**:多线程下载技术可以有效地提升文件的下载速度,尤其是对于大文件或者带宽较小的网络连接。通过利用多个下载线程同时下载文件的不同部分,可以充分利用网络带宽资源,加快文件的下载速度。
多线程下载技术的出现极大地改善了用户在互联网上下载文件的体验使得用户可以更快地获取所需的文件内容。许多下载工具如网络蚂蚁、FlashGet、IDM等都采用了多线程下载技术为用户提供了更高效的下载服务。
## **五.FTP 下载**
FTP``File Transfer Protocol``即文件传输协议是一种用于在计算机之间传输文件的标准网络协议。它提供了一种简单而有效的方式允许用户从一个主机FTP服务器下载文件到另一个主机客户端或上传文件到服务器。
以下是FTP协议及其下载原理的详细说明
### FTP协议基础
- **工作模式**FTP使用客户端-服务器模式,客户端向服务器发出命令并接收服务器的响应来进行文件传输。
- **端口**FTP使用TCP协议服务器默认监听端口为21用于控制连接数据传输则使用动态端口通常是20
- **认证**用户需要通过用户名和密码进行身份验证才能连接到FTP服务器。
- **命令和响应**FTP客户端通过发送命令到服务器来执行各种操作例如列出目录、下载文件、上传文件等。服务器接收到命令后执行相应的操作并向客户端发送响应。
### FTP下载原理
FTP下载的基本原理涉及以下几个步骤
- **建立连接**客户端向服务器发送连接请求服务器响应并建立控制连接。控制连接用于发送FTP命令和接收服务器响应。
- **身份验证**客户端发送用户名和密码进行身份验证。一旦验证通过客户端可以开始执行FTP命令。
- **浏览文件**客户端可以使用FTP命令浏览服务器上的文件和目录结构例如`LIST`命令用于列出目录内容。
- **选择文件**客户端通过FTP命令选择要下载的文件例如`RETR`命令用于从服务器下载文件。
- **建立数据连接**:在下载文件之前,客户端需要与服务器建立数据连接。数据连接用于实际传输文件内容。
- **下载文件**:一旦数据连接建立,服务器开始向客户端发送文件内容。客户端接收文件数据,并将其保存到本地文件系统中。
- **关闭连接**:文件传输完成后,客户端关闭数据连接,并向服务器发送命令关闭控制连接。
### 主动模式和被动模式
FTP连接可以使用主动模式Active Mode或被动模式Passive Mode进行数据传输。
- **主动模式**在主动模式下客户端向服务器的数据端口通常是端口20发送连接请求服务器通过控制端口端口21响应并在数据端口上发送数据。
- **被动模式**在被动模式下客户端发送连接请求到服务器的控制端口端口21服务器响应并在一个随机的高端口打开一个监听并将这个端口号发送给客户端。然后客户端连接到服务器的高端口上进行数据传输。
被动模式通常用于避免防火墙问题和NAT设备的限制因为它允许数据连接从服务器向客户端发起而不是从客户端向服务器发起。
### 安全性
FTP协议最初设计时并没有考虑到安全性因此在传输过程中文件内容以明文形式传输存在安全风险。为了解决这个问题可以通过使用FTP over SSLFTPS或FTP over SSHSFTP等安全扩展来加密传输数据。
## **六.BT 下载**
BT 全称 ``BitTorrent``,一般不翻译,非要翻译的话,那就是“比特洪流”。它一般指基于 P2P 下载机制而设计的一个具体协议。BT 三大客户端µTorrent、qBittorrent 和 Transmissionµ是希腊字母不好输入所以也常写作 uTorrent。
BT下载技术的基本原理
- **种子文件创建**:一个用户想要共享一个文件时,他会创建一个种子文件。种子是一个很小的,大约几十 kB 的,后缀名为 .torrent 的文件。种子内存储有该资源所包含文件的文件名、哈希值和 Tracker哈希值是一个长度几十位不等的16进制数字用于判断一个文件是否因传输过程而损坏或被恶意篡改。其原理可以简单理解为将一个超大数字的每位相加再求余这样以来文件中哪怕有一个字节的变动或增减都会导致对应哈希值的变化。BT 客户端在文件下载完成后会重新计算其哈希值并与种子内保存的哈希值进行比较。如果不同则表示下载过程中出现数据损坏需要重新下载。BT 协议还会对体积较大的文件进行切片处理,从而减小重新下载所需的数据量。
- **分块**文件会被分成一个个固定大小的块通常为256KB或512KB每个块都有一个唯一的标识符。
- **连接Tracker服务器**用户启动BT客户端后首先需要连接Tracker服务器来获取其他参与文件共享的用户信息。Tracker 是一个服务器地址,与 HTTP 下载服务器不同的是,它不保存文件内容,只保存文件的哈希值,和已下载过该文件的所有用户的 IP 地址。也就是说,当你获得一个种子文件,并添加到 BT 客户端之后BT 客户端所做的第一步就是,向种子内保存的 Tracker 服务器询问“哪些人已经下载了这个文件”Tracker 服务器就会将对应的 IP 地址列表,返回给你的 BT 客户端Tracker服务器会返回一份参与文件共享的用户列表称为peer list。
- **连接Peers**P2P 英文全称 Peer To Peer。一般不翻译非要翻译的话那就是“点对点”或“对等”即这种新型下载方式的运作机制。
根据Tracker服务器返回的peer list用户的BT客户端会尝试连接其中的其他用户也称为peer。通过这些连接用户可以请求和发送文件块。
- **下载块**一旦连接到其他用户用户的客户端就会开始请求文件的不同块。客户端会根据需要的块选择合适的peer并向其发送请求。其他peer收到请求后会响应并将相应的块发送给请求者。
- **上传块**用户的BT客户端不仅仅是下载文件也在上传文件。当用户下载了一个块后它也会成为一个可供其他用户下载的资源用户的客户端会将这个块发送给其他请求者。
- **分块验证**:一旦下载完成,客户端会验证每个块的完整性。如果发现某个块不完整或者损坏,客户端会请求相同的块,直到下载到一个完整的块。
- **做种**当一个用户完全下载了文件并且保持BT客户端运行时他就成为了一个seeder种子即可供其他用户下载文件的资源。种子会周期性地向Tracker服务器发送自己的信息以便其他用户找到他并下载文件。
> 迅雷
迅雷也会从别的 BT 软件那里下载资源,但它拒绝向其共享,它只共享给其他同样使用迅雷的用户。这严重违背 P2P 共享的公平原则,因此迅雷被称为吸血雷。
> 专用下载链接
最常见的专用下载链接就是迅雷链接 thunder://。其他少见的还有 QQ 旋风的 qqdl:// 和快车的 flashget://。
这种链接的本质是“加密的 http 链接”,发明这种链接的目的是打击竞争对手,并同时给用户制造障碍,让用户不得不使用他们的产品。本来用浏览器就能直接下载的 http 链接,用户还非得先下载一个迅雷。
而它们使用的加密手段极其拙劣,均使用 Base64 进行编码。因此网上有大量下载地址的转换工具,而 Base64 发明的目的是为了让二进制文件,得以用纯文本进行表达,以方便搭配 data URL 将小文件嵌入代码,或者让只支持纯文本,不支持二进制传输的地方得以实现二进制文件的传输。而被这三个家伙用于纯文本到纯文本的加密,一定会让 Base64 的发明者气个半死。
## **七.PT 下载**
PT``Private Tracker``是一种私有的BitTorrent Tracker系统与公开的BitTorrent网络不同它需要用户进行注册和认证才能访问和下载文件。下面是PT下载技术的基本原理
- **注册和认证**用户需要注册一个账户并且经过认证才能够访问PT站点。认证通常包括通过邀请码注册或者通过一定的上传/下载比例限制。
- **获取种子文件**与公开的BitTorrent网络不同PT站点上的种子文件通常需要用户登录后才能够访问和下载。种子文件包含了文件的元数据信息以及Tracker服务器的地址。
- **连接Tracker服务器**用户启动BT客户端后首先需要连接PT站点的Tracker服务器来获取其他参与文件共享的用户信息。Tracker服务器会返回一份peer list。
- **连接Peers**与公开的BitTorrent网络类似用户的BT客户端会根据Tracker服务器返回的peer list尝试连接其他参与文件共享的用户peer
- **下载块**一旦连接到其他用户用户的客户端就会开始请求文件的不同块。客户端会根据需要的块选择合适的peer并向其发送请求。其他peer收到请求后会响应并将相应的块发送给请求者。
- **上传块**与公开的BitTorrent网络类似用户的BT客户端在下载文件的同时也会上传文件。下载的块也会被上传给其他用户。
- **分块验证**:下载完成后,客户端会验证每个块的完整性。如果发现某个块不完整或者损坏,客户端会请求相同的块,直到下载到一个完整的块。
- **保种**保种是PT站点非常重要的概念。用户需要保持下载的文件在客户端中并继续上传给其他用户以维持站点的健康和分享比例。保种也是PT站点会设置上传/下载比例限制的原因之一。
PT 与 BT 的一个较大的区别是PT 会时刻计算每个用户的上传量和下载量,由此来得到每个用户的一个指标“分享率”,分享率过低会被取消使用资格。
因此与 BT 用户的想法“我要多多下载,然后下完就跑” 相比PT 用户的想法则是“你们赶紧下载我的资源吧,我还有一季美剧要追呢”。最终结果就是,大多数 BT 种子都下载不动,而 PT 种子则都可以高速下载。
## **八.ed2k/电骡/VeryCD/**
ed2k 全称 eDonkey2000 即“电驴”,同时也是其协议 ed2k:// 的名称,一般不翻译,非要翻译的话,那就是“电驴链接”。其与 BT 1.0 是同一时期出现且为技术原理相同的软件。ed2k 与 BT 相比它不需要种子文件所有必要信息比如文件名、哈希值、Tracker 地址等信息都编码并保存在这个地址中。唯一的缺点是不能像种子一样保存多个文件,比如用一个种子文件保存整部电视剧的全部剧集或者更夸张的,一个种子保存一万部电影。
2002 年,一个 eDonkey2000 的程序员用户 ,对当时的 eDonkey2000 客户端不满意,并且相信自己能做出更好的 P2P 软件。因此着手开发,并于同年推出了首个版本,他们的软件名为 eMule中文名“电骡”。电骡兼容电驴的 ed2k 网络,并在电驴的基础上增加了许多其他功能。电骡也基于 Kademlia 协议算法,开发了自己的的去中心化网络 “Kad 网络”。但最最重要的一点是,它是开源的,这一点为 ed2k 在国内的普及奠定了基础。
2003 年,国内的两个 P2P 下载爱好者,建立了一个 ed2k 资源分享网站 VeryCD。这个网站一直被认为是国内资源最丰富的网站各种影视、音乐、游戏、软件等资源应有尽有。
2005 年,也就是 BT 2.0 元年在美国唱片协会的状告之下eDonkey2000关闭了网站并停止了软件更新。在关闭前夕其原作者根据 Kademlia 协议算法,开发出了电驴的去中心化 P2P 分享网络 “Overnet”并更新到了 eDonkey2000 客户端的最后一个版本中。这样使得它的软件在网站关闭之后依然可以使用。
2007 年,在开源的 eMule 基础上easyMule诞生了 。对于中文名,他们没有新起,而是尝试强行将自己称作“电驴”。可能是他们觉得电驴已经死了,由他们来继承,或者认为自己是电驴的一个支脉吧。正是这一点,让国内用户对四个英文名 eDonkey、eMule、easyMule、VeryCD 和中文名电驴之间傻傻分不清楚。
2012 年VeryCD被迫下架了其全部资源的 ed2k 下载链接,此后 VeryCD 也逐渐淡出了人们的视野。
## **九.磁力连接**
磁力链是协议名为 magnet: 的下载链接。magnet 是“磁铁”的意思,它在原理和用法上与电驴链接 ed2k:// 几乎是一样的。它允许用户通过简单的URL链接来获取到资源的相关信息而无需下载一个独立的种子文件。
**基于Hash值的标识**磁力链接是通过资源内容的哈希值来唯一标识的。这个哈希值通常是使用SHA-1算法计算的并且对应着特定资源的唯一标识符。
**包含元数据信息**磁力链接中还包含了一些资源的元数据信息如文件名、文件大小、文件分块信息等。这些信息通常是经过URL编码的并以一种特定的格式嵌入到磁力链接中。
**无需中心化Tracker**与传统的Torrent文件不同磁力链接中并不包含Tracker服务器的地址。这意味着用户可以直接通过磁力链接获取到资源相关的peer列表无需依赖中心化的Tracker服务器。
**使用DHT网络**当用户使用磁力链接时他们的BitTorrent客户端会通过DHT分布式哈希表网络来获取资源的相关信息。DHT网络是一个去中心化的网络允许BitTorrent客户端在没有Tracker服务器的情况下发现其他拥有相同资源的peer。
**动态获取信息**使用磁力链接下载资源时用户的BitTorrent客户端会动态地从其他拥有相同资源的peer处获取到资源的元数据信息如文件列表、文件大小等。这样用户可以立即开始下载资源而无需等待种子文件下载完成。
随着电驴和 VeryCD 的关闭,以后互联网上的各种资源的下载,会逐渐从 ed2k 全部转向 magnet。磁力链还可以与 BT 搭配使用,也就是为多个文件制作好 BT 种子之后,再为种子文件制作一个磁力链接,这样就可以既享受 BT 种子支持多个文件的优点,又可以享受 ed2k 和磁力链只需要链接,不需要文件的优点。
## **十.BT 2.0**
BT 的文件虽然是分布式存储的,但它们的联络员 Tracker 依然是中心化的,只需要借助法律手段,端掉一个 Tracker 服务器,即可让所有 BT 下载瘫痪。因此为了实现完全的防封禁,必须实现完全的去中心化。
2002 年,美国纽约大学的两位学者,发表了他们的研究成果 Kademlia 协议,并且由 BT 发明者 BitTorrent 客户端,率先于 2005 年支持这种基于 Kademlia 协议的不依赖Tracker 服务器的 BT 技术。随后,其他 BT 客户端也陆续跟进支持,这标志着 BT 进入 BT 2.0 的时代。
**BT 2.0下载原理:**
- **分布式Hash表**BT 2.0可能会引入分布式Hash表来替代传统的Tracker服务器。DHT 分布式哈希表网络,英文全称 Distributed Hash Table。其原理就是将原来由 Tracker 服务器保存的“文件哈希 - 文件存储位置” 的映射信息分散存储在 DHT 网络的各个节点中并且留有冗余即多份以保证单个节点在关机之后也不会影响文件的查询。分布式Hash表可以使peer更容易地发现彼此减少了对中心化Tracker服务器的依赖。当用户想要下载文件时他们可以通过Hash值查询分布式Hash表获取与文件相关的peer列表。
- **加密和安全性**BT 2.0引入更强大的加密技术来保护数据传输的安全性和用户的隐私。包括对传输数据进行端到端的加密,以及对用户身份进行更严格的验证和认证。
- **内容验证和真实性**BT 2.0引入更多的内容验证机制,以确保下载的文件的真实性和完整性。包括数字签名、哈希验证和数据完整性检查等技术,以防止文件被篡改或损坏。
- **带宽管理和QoS优化**BT 2.0改进带宽管理算法以优化数据传输的效率和性能。包括更智能的下载调度、流量控制和质量of服务QoS机制以确保下载过程中的良好用户体验。
- **去中心化和匿名性**BT 2.0加强去中心化和匿名性方面的功能以保护用户的隐私和匿名性。包括使用Tor网络、区块链技术和匿名代理等以确保用户的下载行为不被追踪或监视。
## **十一.网盘**
网盘,即位于网络上的硬盘。云的概念兴起以后也被一些厂商称为“云盘”.
网盘的概念最早起源于电子邮箱的附件存储.相比本地磁盘有诸多优点,它可以防止重要资料因电脑故障而丢失,可以防止机密数据因电脑丢失而外泄。代替 U 盘和移动硬盘在家里和公司之间共享文件。如果你的网盘是同步盘的话,还免去了频繁的手动上传和下载.
虽然网盘的几T空间看起来很唬人,但对所有用户来说,填充这几 TB 空间的往往是视频资源,而且绝大多数用户均是视频的消费者,也就是从网上下载视频,而不是自己拍摄视频。因此这些视频资源都是高度重叠的。现实情况就是 1000 个用户使用的 1TB 空间,不是占用了 1000TB 的服务器空间,而是 10TB。
## **十二.离线下载**
准确来说,离线下载其实就是其他人替你挂机下载,下载完成后,再传给你。
**添加下载任务**:用户通过离线下载服务提供的网页或应用程序界面,将需要下载的文件链接或种子链接添加到下载任务列表中。
**解析链接**:离线下载服务会对添加的下载链接进行解析,提取出其中的文件信息和下载地址。
**远程下载**:离线下载服务会以其自身的网络连接,从文件来源服务器下载文件。这个过程完全在服务端进行,用户的设备不直接参与下载过程。
**存储文件**:下载完成后,文件会被保存在离线下载服务的服务器上,而不是用户的本地设备上。用户可以在需要时通过网页或应用程序界面访问和管理这些文件。
**提供下载链接**:一旦文件下载完成,离线下载服务会生成一个新的下载链接或提供直接的文件下载链接给用户。用户可以使用这个链接来下载文件到自己的设备上。
刚开始使用离线下载的用户,可能会惊叹于离线下载的“秒完成”。这是因为已经有人先于你离线下载过这个资源了,这就是“资源重叠率”。

141
content/Network-zuwang.md Normal file
View File

@ -0,0 +1,141 @@
+++
title = "Network的艺术:家庭组网与设备选购"
date = 2025-01-21
[taxonomies]
tags = ["网络艺术"]
+++
前言 本文介绍一些家庭组网方案和家庭网络升级方案。
<!-- more -->
# 一.电组网(网线)方案
## AC+AP
- **1.弱电箱光猫+箱内AC+各个房间网线直连AP****企业级**方案,美观漫游信号好,成本稍高,比较省心;
- **2.弱电箱光猫+软路由AC+各个硬路由刷AP**:同上,自定义程度高,适用与有一定技术基础的用户,性价比高;一般可以使用**集客AC/AP**系统。
- **3.弱电箱光猫(光电转换)+软路由PPPoE+DHCP+AC**:,即为**光猫改桥接**软路由PPPoe拨号
- **4.SFP猫棒光模块+2.5G网管型交换机/AC+AP**:光猫一般**有Wifi+PPPoE+IPTV+光纤固话**功能如果不想用光猫可以替代为此方案IPTV设置Vlan解决固定电话设置为转发到个人手机号或取消
## Mesh
- **5.弱电箱光猫+网线直连硬路由+无线Mesh连接到另一台同型号路由器**适用与家里预埋的网口不多的情况无线Mesh需要**AX3000及以上**同型号路由器也可以将硬路由刷机用Easymesh实现。
- **6.弱电箱光猫+网线直连硬路由+有线连接到另一台同型号路由器**适用与有足够的预埋网口比无线Mesh稳定。如果两台路由器之间不能直接连接则需要有线回程即为**弱电箱光猫+有线连接到路由器+连回弱电箱交换机+有线连接到另一台路由器**.
- **7.弱电箱光猫+电力猫+220V电线+电力猫**:比较小众的组网方案,使用电线传输数据,速度不高,还容易受到大功率电器的干扰,适用与没有网口的环境;
> 单层楼环境优先考虑Mesh组网多层楼环境优先考虑AC+AP
> 如果要实现全屋2.5G网络,可以直接更换**2.5G光猫+带2.5G口下接设备**,注意需要宽带套餐/光猫/路由器/网线/终端设备全部支持2.5G才能跑到近似网速;
> 如果需要2.5G以上更高带宽则考虑光组网方案也可以像方案4买相应性能的交换机设备
> 不建议使用光猫自带的wifi光猫同时PPPoE拨号+DHCP路由+发射wifi性能不够会造成大量发热。
# 二.光组网(光纤)方案
光纤方案性能强大但光纤便宜而光电转换设备贵毕竟最终还是要连到RJ45网口或无线且后期维护成本高需谨慎考虑。
- **8.FTTROLT+FTTR光猫AC+分光器和单模/多模光纤+多个从光路由AP**光AC+AP性能强大但比较昂贵自定义程度小
- **9.FTTROLT+FTTR光猫+分光器和单模/多模光纤+从光路由(副)**主副光猫Mesh性质同上
> 光纤需要考虑光衰,且没有网线耐用,打头工具也比网线贵的多;而且需要注意合约内容;当然,也可以在装修阶段就部署**光电复合缆**,会有更多的选择空间。
## 三.路由器工作原理
路由器是计算机网络中的重要设备,主要用于连接不同的网络,并在这些网络之间转发数据。其工作原理涉及以下几个主要方面:
- 1.数据包转发:路由器根据目标地址将数据包从一个网络转发到另一个网络。它通过查找路由表来确定最佳路径,并将数据包转发到正确的输出端口。
- 2.路由表路由器维护一个路由表其中包含了网络的拓扑结构以及到达每个网络的最佳路径信息。路由表可以通过静态配置或动态路由协议如OSPF、BGP等自动学习和更新。
- 3.数据包处理当路由器接收到数据包时它会检查数据包的目标IP地址并根据路由表确定应该转发到哪个端口。路由器还可能执行其他功能如网络地址转换NAT、质量服务QoS和防火墙等。
- 4.连接多个网络路由器通常具有多个网络接口可以连接不同的网络。这些网络接口可以是以太网、Wi-Fi、光纤等使路由器能够在不同类型的网络之间进行数据转发。
- 5.路由器协议路由器使用不同的协议来实现数据包转发和路由表的更新。这些协议包括IP协议用于数据包交换、动态路由协议用于路由表的学习和更新以及其他协议用于网络管理和安全。
一般而言,家用路由器使用 DHCP 模式由上级网关的网线连接到路由器的WAN口如小米路由器的192.168.31.1,在浏览器输入此地址可以进入管理界面并可以发现了解连接该无线网络的设备地址都为192168.31.xx且路由器的几个Lan口可以做交换机使用。
## 四.路由器的选择与常见误区
路由器的信号好不好,一般而言,与以下几点相关:
**1.路由器支持的协议类型:**
路由器命名常见的格式为AX3000、AC1800等前面代表协议后面数字表示速率MbpsAX802.11ax在相同速率下比AC更快即Wifi6比Wifi5要好。在相同协议下一般速率越高越好千兆优于百兆但需注意千兆端口和千兆天线的产品。Wi-Fi 5802.11ac和Wi-Fi 6802.11ax是两种不同的Wi-Fi标准
- 速度Wi-Fi 6 比 Wi-Fi 5 更快。Wi-Fi 5 支持的最高速度为1.3 Gbps理论上而 Wi-Fi 6 的最高速度为9.6 Gbps同样是理论上的速度。这意味着Wi-Fi 6可以提供更快的数据传输速率特别是在拥挤的网络环境中。
- 容量Wi-Fi 6比 Wi-Fi 5具有更好的网络容量管理。Wi-Fi 6采用了一些技术如 OFDMA正交频分复用多址和 MU-MIMO多用户多输入多输出使得网络更有效地管理多个设备的连接。这意味着 Wi-Fi 6在拥挤的网络环境中能够更好地处理大量设备的连接而不会出现性能下降。
- 延迟Wi-Fi 6 比 Wi-Fi 5 具有更低的延迟。通过一些新的技术如目标唤醒时间TWT和 BSS 领导者切换Wi-Fi 6 能够在连接设备之间实现更快的响应时间和更低的延迟。这对于需要快速响应的应用,如在线游戏和视频会议,尤其重要。
- 功耗Wi-Fi 6 比 Wi-Fi 5 具有更低的功耗。通过一些节能技术如目标唤醒时间TWT和基于时间的计划BSS领导者切换Wi-Fi 6 可以更有效地管理设备的电量消耗,延长设备的电池寿命。
在 Wifi6 普及的当下,建议购买 WiFi6 路由器,并且此类路由器往往还带有 wifi5 备用网络,可与老旧设备兼容,不必担心。小心百兆网口和千兆天线的牛马产品!
**2.路由器支持的速率:**
不要盲目追求大数字路由器标注的无线速率是叠加速率并非单一设备接入的最大速率。例如标注为1750Mbps的路由器实际上是由2.4GHz的450Mbps和5GHz的1300Mbps相加而成单一设备的最大通信速率只有1300Mbps。大多数家庭接入的光纤速率为千兆1000Mbps因此最大速度为125MB/s因此瓶颈通常不在于路由器性能选购家用路由器更重要的是提高信号覆盖面积和强度能跑满千兆已经不错。
**3.路由器的无线频段:**
2.4GHz频段稳定性高覆盖范围广穿墙能力强而5GHz频段速度快但穿墙能力较弱
**4.无线网络的频段带宽:**
2.4G有20Mhz和40Mhz两种频道带宽5G则有80Mhz和160Mhz两种频道带宽就是发射频率的宽度带宽越低穿透性越好。如果连的设备多的话就用低频段
**5.芯片的主频和板载内存**
路由器处理器的主频越高加解密性能越好速度和带机量也更大目前低价位路由器通常使用MTK、瑞昱、海思等廉价处理器配以64MB/128MB的内存。而高端路由器多使用博通的高端芯片在内存的配置上往往可以达到256MB以上。博通高端芯片在各个方面表现都不错同时各位大神对刷机的支持力度也比较大。板载内存越大可为后续刷机留下空间并支持插件等
**6.其他功能**
如 QOS设备管理IPTV 支持IPV6 等等;
> 天线越多信号不一定越强。
路由器的发射范围是由协议决定的与根数无关。对于双频的路由来说4根或者6根其实只有一半2根2.4g和2根5g使用)。
> 无线功率不是越大越好。
因为无线通信是双向的路由器功率大了但是你的手机等无线终端设备功率是不变的。在符合国家标准的情况下wifi 功率是有硬性标准的单台路由器覆盖80平以上的面积不太现实。因此当你面对信号差、覆盖死角的时候应该首要想到的是增加覆盖节点而不要相信宣传所谓的“穿墙王”。
## 五.网线的选择与布线
**1. 网线选择建议:**
在考虑网络建设方面从经济效益角度而言超五类网线已经足以满足大多数家庭的千兆网络需求1Gbps。在短距离内质量较高的五类/超五类网线支持高达2500兆的传输速率2.5Gbps)。因此,一般情况下,考虑到成本因素,建议家庭网络布线选用符合标准的超五类网线。
若愿意适度增加布线成本则推荐选择支持万兆10Gbps网络的六类/超六类以上网线,尤其是从光猫到主路由/交换机的这一段线路,最好支持万兆。即便今后需要扩展网络速度无法满足万兆的有线条件,也可以通过未来的 Wi-Fi7 标准实现无线超万兆速度覆盖。
**2. 网线布线注意事项:**
在进行网线布线时,无论是屏蔽网线还是非屏蔽网线,都应确保将强电线和弱电线分开放置于不同的管道中。同时,在走线过程中应保持一定的间距,以减少干扰。若需要考虑未来更换网线的情况,建议选择更大的穿线管道,并确保每条网线单独走一根管道。若出现强、弱电交叉走线的情况,可采用铝/锡纸包裹弱电管道以实现简单的屏蔽作用。应避免与大功率强电线相交或并行走线,如空调、烤火炉、微波炉等。
**3. 弱电箱至电视柜网线布线:**
考虑到当前电信运营商提供的IPTV功能如果不熟悉设置VLAN的单线复用或者未来可能使用到链中聚合技术建议从弱电箱至电视柜至少布置两条网线以免后悔。
**4. 接线盒的预留:**
许多人可能认为随着21世纪的到来有线布线已经过时。因此为了节约成本或受装修公司的误导一些卧室甚至书房都没有进行网线布置这是不可取的。无线网络虽然方便但速度远不如有线快速稳定。因此建议在每个卧室的相应位置安装一个网线接线盒并在墙壁上安装电视时下方也应预留一个网线接线盒。如果有地下室或楼阁也应该布置一条网线。多预留一些接线盒总比今后发现需要网线却没有的尴尬情况要好。
**5. 死角位置的网线和电源接口预留:**
对于信号死角的位置,根据实际情况,如阳台、露台等不需要路由器设备可见的地方,可以考虑将路由器隐藏在吊顶中,甚至包括厕所的吊顶也可以考虑。在这些位置预留多个网线和电源接口是明智的选择。
**6. 路由器放置位置推荐:**
一般来说家庭会将路由器放置在弱电箱或电视柜内然而周围其他电器设备运行时会产生电磁干扰对2.4G和5G信号都会造成影响甚至蓝牙设备也会有干扰。基于信号向下传播的特性建议将路由器放置在较高位置如吊顶内或进门处的高处并最好选择居住区域的中心位置以实现更好的信号覆盖。

4
content/_index.md Normal file
View File

@ -0,0 +1,4 @@
+++
paginate_by = 5
sort_by = "date"
+++

63
content/about-2024.md Normal file
View File

@ -0,0 +1,63 @@
+++
title = "乱七八糟:2024年度总结"
date = 2025-01-04
[taxonomies]
tags = ["乱七八糟"]
+++
前言 又是新的一年,时间流速感觉越来越快了。
<!-- more -->
## 大事记
- 六月份暑假将家里大翻新,包括水晶头,吊灯,门锁,水龙头等等;
- 买了新柜子,房间更有序了;
- 和朋友们聚餐;
- 采用Mesh进行家庭组网
- 安装了一盏太阳能路灯,院子里更明亮了;
- 和父母看电影;
- 将博客迁移到新平台用上亚马逊CDN
- 更换域名,不再续费 .ink;
- 使用国家补贴更换电脑,换掉了故障百出的机械革命;
- 办理校园网套餐并注销掉旧的电话卡;
- 买了一台AX3000路由器并刷成openwrt绕过校园网检测
- 开了azure虚拟机并研究
- 卖掉了chromebook
- 配置了Qemu虚拟机
- 给父母加装了流量包;
- 更换了鼠标,并买了显示器和沙发椅;
- 家里更换新热水器;
- 修理亲戚家的网络问题;
- 在学校和家里两处配备常用药箱;
- 将所有设备更换为typec接口
- 整理并精简了RSS订阅源
- 重构了书签结构,增加用途分类;
- 用上了Android 15并使用多种开源软件
- 研究不同的root方案并完美隐藏环境
- 自制养生茶,咖啡和燕麦粥;
- 养成跑步习惯;
- 使用Deepl api进行翻译学习
- 看Netflix并研究浏览器环境检测
- 搭建Syncthing同步服务器实现三端同步
- 定时备份重要数据;
- 学习英语纪录片,每天背单词;
## 成长与反思
- 谋定而后动,不要冲动消费;
- 实践出真知,不要轻易下定论;
- 适合自己的才是最好的;
- 锻炼自身,早点睡觉,饮食规律是最好的养生;
## 新的一年的目标
- 在各大SRC平台挖点漏洞
- 封装一个完美的windows系统用于对外使用
- 研究并总结各大代理技术;
- 重构家庭数据中心;
- 学习一门新的语言并熟悉一种业务;
- 控制体重并研究低成本健身;

View File

@ -0,0 +1,70 @@
+++
title = "乱七八糟:流量卡购买与套路"
date = 2023-08-24
[taxonomies]
tags = ["乱七八糟"]
+++
前言 由于临近升学,校园网不尽人意,因此许多小伙伴有了买一张流量卡的计划。本文以三大运营商为例,说明常见流量卡的套路与选择。
<!-- more -->
## 一.什么是流量卡
流量卡本质上还是一张 SIM 卡,因为具有大流量、低月租而闻名。
## 二.为什么需要流量卡
普通卡大多有着长合约和固定归属地不能轻易更换套餐且套餐月租费用较高特别是在5G推行时期4G的资费不减反升且速度有所下降。而流量卡动则100G往上月租在50以下且可以随时退卡。
## 三.流量卡基本原理
由于三大运营商处于半国企状态自负盈亏因此在长期亏损下不得不整一些牛马活采用一些策略比如冗长的条款和隐藏极深的优惠套餐等等。而由于不同地区的经济发展状况不同部分中西部地区的地区分公司业绩不佳为了在短期内达到要求往往会和一些地区分销商进行合作将本地区的电话卡改为优惠的套餐从而吸引客户。注意99%所谓的月租19、29等流量卡都是要先缴一笔较多的钱进而每月返还一点点实现长期上的低月租运营商是要短期变现的
那么是不是我们就没有优惠了呢其实相对于5元1G、40元10G的资费而言还是非常划算的。
## 四.分清流量卡和物联卡
部分小伙伴反映被物联卡坑了这里我们一定要注意诸如某宝某猫上面的9999G超级流量卡usb接口的随身WiFi等等不出意外都是物联卡即为工业设备所使用的卡一般速度极慢跑几百KB到1MB;这些卡不能被个人所使用,很可能一段时间后就被封号!且分销商不是正规的三大运营商,随时可能跑路。
## 五.购买流量卡需要注意的事项
- 1.关于靓号
大部分流量卡是不能选号的,因为这类具有优惠套餐的卡大多来自不同地区的前任买家,因此靓号数有限,总不能既有好的号码又有优惠套餐;而这就带来第二个问题:
- 2.关于号码绑定
作为信息时代的重要识别符,电话卡和身份证几乎同样重要,在前任主人信息意识不强的情况下,其大部分社交媒体、生活服务和各种网站的帐号都会遗留下来,这就需要我们去一一解绑;作者曾经买了一张宁夏的流量卡,结果通过验证和社工成功进入了前主人的微信和淘宝帐号,当然现在已经注销了;部分平台不支持注销的,只能继续使用前号;甚至有概率被前号主的债务人打电话催债;因此我们一定要小心谨慎;
- 3.关于归属地
由于1中的原因流量卡的归属地大部分是随机的比如青海宁夏等等这样一来当别人打电话时会看到地址为中国宁夏之类可能会误以为是诈骗电话当然这样也有不被看到地址的好处所谓各有优点。
- 4.关于信号
真正影响体验的不只是手机基带,还有你所在地区中三大运营商的基站分布;因此,购买之前可以先查看一下你所在地区哪个运营商信号最好,从而对症下药。
- 5.关于副卡
有些小伙伴在买完流量卡后打算作为主力卡使用那这样原先的卡套餐就没必要了可以办理8元保号套餐让号码可以继续使用。
- 6.关于注销
每个运营商最多办5张电话卡因此注销需谨慎流量卡大部分可以线上异地注销但也要仔细看清楚条款。
## 六.实际操作
1.由于线下营业厅不够优惠,因此我们往往要在网络渠道上寻找各个分发渠道,比如知乎回答,淘宝店铺,微信小程序之类。这里以知乎活动为例:
可以看到确实非常划算,但是有几个细节:
一是激活卡需要预充值数额较多二是额外的流量以流量包形式给出此流量包不同活动获得方式也不同三是155G中包括定向流量不能和其他APP混用四是超额后资费特贵要小心。
注意要实名购卡,且收获地址要足够详细,会有专门的快递小哥和你线下激活,预充值,注意接受电话!
2.隐藏的条款办完卡后进入营业厅的APP可能不会马上出现这是因为系统的延迟以及运营商的计时方式需要在月初才能有全部的流量后几天按百分比计算第二个月就正常了。
## 后记
仔细观察条款,不要冲动消费。

View File

@ -0,0 +1,140 @@
+++
title = "乱七八糟:垃圾清理的艺术"
date = 2023-11-19
[taxonomies]
tags = ["乱七八糟"]
+++
前言 在从前的机械硬盘时代,由于硬盘空间小,且没有时常清理垃圾文件,常常导致硬盘空间严重不足;特别是在以 Windows 平台为代表的 C/D盘 体系下。那么,我们常说的垃圾清理,释放硬盘空间,到底是在清理什么?哪些文件可以被清理?
<!-- more -->
## 垃圾清理
通常指的是清理计算机硬盘上的`不必要或临时`文件,以释放硬盘空间。这些文件包括:
1. **临时文件:** 程序在运行时会生成临时文件,以帮助它们完成任务。这些文件在任务完成后不再需要,占据了硬盘空间,却没有被回收。
2. **缓存文件:** 许多程序比如浏览器会在本地存储缓存数据以加快后续访问速度。但是这些缓存文件可能会占据大量空间尤其是在长时间不清理的情况下这里点名国产的微信和QQ。
> 注意,清理缓存文件可能意味着加载速度变慢或需要重新下载,耗费流量,视情况而清理。
3. **日志文件:** 许多应用程序会生成日志文件来记录其活动和错误。这些日志文件可能会积累并占用大量空间,尤其是在长时间不清理的情况下。
> 特别是C盘上的log文件因为它们记录了系统和应用程序的运行情况可能会变得相当庞大。因此定期清理C盘中的log文件是维护系统性能和释放磁盘空间的重要步骤之一。
- **备份文件:** 如果您的系统或软件定期创建备份或快照,旧版本备份可能会占用大量空间。您可以定期清理旧版本备份以释放空间。
- **大型文件:** 有些应用程序可能会生成大型临时数据文件,如媒体编辑软件的临时视频或音频文件。这些文件在任务完成后可能会被遗留,占据大量空间。
> 例如PS加载的工作文件放C盘的话会占用大量空间。
4. **卸载残余:** 在卸载应用程序时,有时候可能会留下一些残余文件,如配置文件、注册表项等,这些文件可能会继续占用硬盘空间,并且在一定程度上影响系统的性能。定期清理这些卸载残余是维护系统健康的一部分。
> 还记得删除牛马软件时的挽留选项吗?里面往往藏着“保存个人配置”。
5. **重复文件:** 在计算机系统中,有时候可能会出现重复的文件,这些文件可能是因为用户错误地复制或下载了多个副本,也可能是由于应用程序或系统错误导致文件重复。这些重复文件不仅占用了宝贵的存储空间,而且也增加了文件管理的复杂性。
> 这里再次点名微信同样一个文件能保存好几次且不给出具体的存放路径怪不得动辄十几个G,尾大不掉,真的离谱!
6. **回收站文件:** 删除文件时,它们通常不会立即从硬盘上删除,而是移动到回收站。清空回收站可以释放这些被删除文件所占据的空间。
> 注意,尽管清空回收站会立即释放硬盘空间,但实际上删除的文件并不会立即被擦除,而是被标记为可以被覆写的空间。在某些情况下,专业的数据恢复软件可能仍然可以找回部分被删除的文件。因此,如果希望永久删除文件而不被恢复,需要使用专门的文件删除工具,来覆盖文件内容以确保无法恢复。
7. **下载文件夹:** 下载文件夹可能会积累大量临时文件、安装程序、文档和媒体文件。定期清理下载文件夹可以帮助释放硬盘空间。
8. **不再使用的程序:** 有时候,安装的一些程序你已经不再使用或需要它们。卸载这些程序可以释放相关的硬盘空间。
9. **浏览器插件与扩展:** 未使用的浏览器插件和扩展可能会占用不必要的资源和空间。删除不再需要的插件和扩展可以帮助优化浏览器性能并释放空间。
10. **安装程序和更新文件:** 在安装程序或更新软件时,临时安装文件可能会留在系统中。这些文件通常可以安全删除,因为安装程序已经完成。
> 例如安卓上的安装包APK文件和下载安装后的EXE文件。
需要注意的是,往往有许多牛马软件安装目录和文件目录不规范,或者是在安装时没有设定好,会产生大量垃圾文件;这时就需要垃圾清理工具或者手动遍历文件夹(注意隐藏文件夹)。
## 垃圾清理软件
### Windows 平台:
1. **CCleaner** CCleaner 是一款功能强大的系统优化工具,可以清理垃圾文件、注册表项等,并提供了其他的系统优化功能。
2. **Disk Cleanup磁盘清理** Windows 自带的磁盘清理工具,可以帮助您清理不必要的系统文件,包括临时文件、回收站等。
3. **BleachBit** BleachBit 是一款开源的系统清理工具,可以帮助您清理系统中的临时文件、缓存、浏览器历史等。
### macOS 平台:
1. **CleanMyMac X** CleanMyMac X 是一款功能强大的系统优化工具,可以帮助您清理系统中的垃圾文件、优化性能,并提供了其他的实用工具。
2. **Onyx** Onyx 是一款免费的 macOS 系统维护和优化工具,可以帮助您清理系统缓存、日志文件、临时文件等。
3. **AppCleaner** AppCleaner 是一款简单易用的应用程序卸载工具,可以帮助您彻底清理 macOS 系统中的应用程序及其相关文件。
### Linux 平台:
1. **BleachBit** BleachBit 不仅适用于 Windows也提供了 Linux 版本,可以帮助您清理系统中的临时文件、缓存、浏览器历史等。
2. **Stacer** Stacer 是一款开源的系统优化和监控工具,提供了垃圾清理、系统管理、系统监控等功能,适用于多种 Linux 发行版。
3. **SweeperKDE 扫除者):** Sweeper 是 KDE 桌面环境的一部分,提供了简单易用的垃圾清理功能,可以帮助您清理系统中的临时文件、缓存等。
## Arch linux 清理
1. **缓存清理**:
- `sudo pacman -Sc`: 清理包缓存,删除已安装的但不再需要的软件包。
- `sudo pacman -Scc`: 进一步清理所有包文件,包括已下载的包。
2. **系统日志**:
- `/var/log` 目录下包含系统日志文件。你可以删除较旧的日志文件,或者使用日志轮换工具,如 `logrotate`
3. **临时文件**:
- `/tmp` 目录下包含临时文件。你可以通过 `sudo rm -rf /tmp/*` 清理它们。
4. **缓存文件**:
- 一些应用程序会在 `~/.cache` 目录下存储缓存文件。你可以检查该目录并删除不再需要的文件。
5. **AUR 缓存**:
- AUR 辅助工具(如 `yay`)会在 `~/.cache/yay` 目录下存储构建和下载的软件包。你可以清理这些文件。
6. **旧内核**:
- 如果你安装了多个内核版本,你可以删除不再需要的旧内核。首先使用 `uname -r` 查看当前内核版本,然后使用 `sudo pacman -Rns linux-older-kernel` 删除不需要的版本。
7. **不再使用的配置文件**:
- 检查家目录下的隐藏文件,如 `~/.config`,并删除不再需要的配置文件。
8. **Docker日志文件**:
使用 `docker ps -a` 命令查找你感兴趣的容器的 ID。
````
docker ps -a
````
进入容器的日志目录,路径类似于 `/var/lib/docker/containers/<container-id>/`。
````
cd /var/lib/docker/containers/<container-id>/
````
使用命令清理或删除日志文件。你可以删除所有日志文件,或者只删除特定的日志文件。
````
# 删除所有日志文件
rm *.log
# 删除特定日志文件(例如 stdout 和 stderr
rm *-json.log
````
## **Arch Linux 安装备份**
你可以定期备份 Arch Linux 安装的软件列表,以便在需要时轻松还原。
````
pacman -Qqe > package-list.txt
````
这将列出所有已安装的软件包,并将其保存到文件 `package-list.txt` 中。在还原系统时,你可以使用以下命令:
````
sudo pacman -S --needed - < package-list.txt
````
## 后记
垃圾文件的产生总是无可避免,这是因为随着使用时间的流逝,系统的熵值也在增大;生命以负熵为食,同样的为系统清理垃圾也是逆熵的一部分。在你的生命中会有许多电子设备,但它们往往只有你一任主人,请善待它们!

57
content/about-KGNL.md Normal file
View File

@ -0,0 +1,57 @@
+++
title = "乱七八糟:快过年了笑话大全"
date = 2023-08-23
[taxonomies]
tags = ["乱七八糟"]
+++
前言 快过年了系列笑话常常于过年期间在各大平台传播反应了各技术人士的爱好与工作。本文收集了24个该系列的笑话欢迎补充。
<!-- more -->
1.快过年了不要再讨论什么HyperOS了。你带你搭载了最新基线HyperOS的手机回到家并不能给你带来任何实质性作用朋友们兜里掏出大把钱吃喝玩乐你默默的在家里摆弄你的移植包。亲戚朋友吃饭问你收获了什么你说我移植了一个高级材质2.0的ROM亲戚们懵逼了你还在心里默默嘲笑他们笑他们不懂你的Hypermind不懂你的AI内测也笑他们手机状态栏通知图标个数不能自定义。父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我儿子的手机天天显示一个蓝色界面有时候电话都打不通。
2.快过年了不要再讨论什么C++标准、CWG缺陷报告、LLVM编译器了。你带你的WG21草案、编译器补丁回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默地在家里摆弄你的Clang patch。亲戚朋友吃饭问你收获了什么你说我给Clang实现了编译期反射和std::execution可以让用户一行代码做到非侵入式序列化然后异步发起IO亲戚们懵逼了你还在心里默默嘲笑他们笑他们不懂你用的C++标准不懂你写的精妙代码也笑他们的低端安卓手机还要跑那么慢的Java虚拟机。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了辆车姑娘升职加薪了你的父母默默无言说我的儿子在家又配了台大内存台式来编译Clang开起来嗡嗡响家里电表走得越来越快了。
3.快过年了不要再讨论什么大语言模型之类的了。你带那堆checkpoint回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的推理框架。亲戚朋友吃饭问你收获了什么你说我把huggingface上的大模型都跑了个遍还自己做了几个dataset train了lora出来亲戚们懵逼了你还在心里默默嘲笑他们笑他们不知道开源大模型在过去一年有多大的进展也笑他们不懂4bit量化和low rank finetuning的巨大威力。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子买了显卡也不打游戏就天天在那对着AI聊天倒是家里电表走得越来越快了。
4.快过年了不要再讨论什么log4j、cs、bypass、流量检测之类的了。你带你的破电脑回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的破烂rce。亲戚朋友吃饭问你收获了什么你说我装了个虚拟机把各个工具都玩了一遍亲戚们懵逼了你还在心里默默嘲笑他们笑他们不懂你的自动注入不懂你的 10层代理、不懂你的流量混淆也笑他们连个复杂点的密码都记不住。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子搞了个破电脑开起来嗡嗡响、家里电表走得越来越快了。
5.快过年了,不要再讨论什么 LSPlant, Epic, Pine, Dobby, SandHook, YAHFA 之类的了。你的 ART 上的钩子们不能给你带来任何实质性作用,朋友们兜里掏出一大把钱吃喝玩乐,你默默的在家里打开你的 Android Studio 和 cs.android.com 。亲威朋友吃饭问你收获了什么,你说我的 ART 换了个新 hook 实现,它在 Android 6.0-14 都能用,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂什么是 AOT/JIT/nterp不懂 inline hook 和 PLT hook 的区别,不懂 Android 上哪些 syscall 不会被 seccomp 吃掉,笑他们不会 dex 脱壳,笑他们手机上的并夕夕。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,姑娘升职加薪了,你的父母默默无言,说我的女儿天天在家里对着电脑上的一堆英文发呆,有时候打电话还关机打不通。
6.快过年了,不要再讨论什么 NAS, HTPC, OpenWrt 了。你摆弄一坨铁在家并不能给你带来任何实质性作用,朋友们兜里掏出一大把钱跟对象吃喝玩乐,你默默的在家里摆弄你的破主机。亲戚朋友吃饭问你收获了什么,你说我组了台 8 盘位的 All in One ,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂你的电影刮削器,不懂你的 Auto Backup ,笑他们换个手机电脑手忙脚乱的到处传输旧数据,也笑他们看爱奇艺还要忍受会员专属广告。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,孩子订婚成家了,孙子会打酱油了,你的父母默默无言,说我的儿子装了个黑盒子,开起来嗡嗡响,家里电表还走得越来越快了。​
7.快过年了,不要再讨论什么 CVE、CNVD、CNNVD 之类的了。你的漏洞们不能给你带来任何实质性作用,朋友们兜里掏出一大把钱吃喝玩乐,你默默的在家里打开你的 Android Studio。亲威朋友吃饭问你收获了什么你说我给 Google 报了个新漏洞Android 14 最新安全补丁都能用,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂 什么是 CVE不懂 BAL Bypass不懂跨用户要 INTERACT_ACROSS_USERS 权限,不懂 Intent 转发的危害,不懂什么是 OOB不懂各 targetSdk 的限制,笑他们手机上的一堆广告。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,姑娘升职加薪了,你的父母默默无言,说我的女儿天天在家里对这电脑上的一堆英文发呆,有时候打电话还关机打不通。
8.快过年了,不要再讨论什么 BGP、Linux、LDAP 了。你带你的自动基于 RTT 选路的大二层、能开上百个 VPS 还带高可用的机柜、干啥都可以 SSO 的 Krb5 Realm 回到家并不能给你带来任何实质性作用,朋友们兜里掏出一大把钱吃喝玩乐,你默默地在家里摆弄你的 Ansible Playbook、NixOS、Cisco Configure因为你购买高性能交换机和企业盘已经花掉了一年挣的大部分钱。亲戚朋友吃饭问你收获了什么你说我的 vSphere 集群终于配出了 vSAN新加入节点只要配置类似都可以加入存储池子中共享数据HA 就容易了,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂你用的起夜级硬件,不懂你配的起夜级存储,也笑他们的消费级设备上横竖都是广告,什么性能都不行。你父母的同事都在说自己的子女一年的收获:儿子买了个房,女儿买了辆车,姑娘升职加薪了;你的父母默默无言,说我的女儿在家又又又买了一台洋垃圾服务器,开起来嗡嗡响,家里电表走得越来越快了,别人不知道还以为家里是卖二手电脑的。
9.快过年了不要再讨论什么刷flymecolor os澎湃os,类原生了。你带你的小米14回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的小米14亲戚朋友吃饭问你收获了什么你说我学会了解BL锁学会了卡刷和线刷亲戚们懵逼了你还在心里默默嘲笑他们笑他们不懂你的刷flyme刷面具刷内核装各种模块也笑他们买国行苹果比你贵好几千档次还比你低。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子买了个小米14在家里不停的拔出数据线插上数据线每天早上起床第一件事是看看手机还有多少电看看每个软件多少瓦的功率。
10.快过年了不要再讨论什么cmi9929gia了你带着你的传家宝瓦工the plan回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的破vps亲戚朋友吃饭问你收获了什么你说我买了一台瓦工the plan什么澳洲9929荷兰9929日本软银香港cmi洛杉矶的三网gia回程的你的千兆移动宽带配上香港cmi油管能到四五十万亲戚们懵逼了你还在心里默默嘲笑他们笑他们不懂你的the plan多么的牛逼除了香港日本的gia市面上所有的优化线路都有了也笑他们十有连富强上网都不知道是什么,你父母的同事都在说自己的子女一年的收获儿子买了个房女儿购了台车姑娘升职加薪了你的父母默默无言最后被人问到了不说话不礼貌说我的儿子买了一堆传家宝vps什么45欧3年的香港cmi传家宝光the plan就买了三台甲骨文全区都有了rncc一堆几刀传家宝hz的杜甫好几台ovh0.97美西美东都有了这辈子的vps都不用买了。
11.快过年了不要再讨论什么功放、音箱、DSP 了。带你测试麦回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的音箱摆位跟DSP参数。 亲戚朋友吃饭问你收获了什么你说我刚刚把系统调到了频响平直把100Hz以下的RT60压到 400ms。亲戚朋友都忆逼了你还在心里默默嘲笑他们笑他们不懂你的数字信号处理不懂你的房间声学。也笑他们还在听逼侧调音的多媒体 2.1。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,姑娘升职加薪了。
12.带你买的新游戏回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的steam。亲戚朋友吃饭问你收获了什么你说我刚刚一把百杀了。亲戚朋友都忆逼了你还在心里默默潮笑他们笑他们不懂你的pro不懂你的捞薯。也笑他们天天就只知道玩原。
13.快过年了不要再玩什么画幅、opengate、变形宽荧幕了。带你松下gh6回到家并不能给你带来任何实质性作用朋友们门兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的相机。亲戚朋友吃饭问你收获了什么你说我刚刚在捣腾外录拍微距。亲戚朋友都忆逼了你还在心里默默嘲笑他们笑他们不懂你的技术不懂你的金钱投入。也笑他们只知道像素多少。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加新了你的父母默默无言说我的儿子在家里搞了相机一个月花销怕人天天有卡卡快门声声。
14.快过年了不要再讨论什么充电宝充电头数据线。你带你的一大箱破充电器带回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里用各种表测试你的充电头。亲戚朋友吃饭问你收获了什么你说我用了上了200W的充电宝亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂充电协议不懂什么是纹波线阻动力电池不懂你的手机充电有多快也笑他们连充电宝都不会用。你亲戚都在说自己的子女一年的收获儿子谈了个对象买了个房要结婚女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子整了个砖头一样的充电宝整天在那充电放电家里的电表转的越来越快了。
15.快过年了,不要再讨论什么对子○特、 MacOOs、MagicEyes了。带你的杯子回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的杯子。亲戚朋友吃饭问你收获了什么你说我刚刚坚持了20分钟亲戚朋友都惜逼了你还在心里默默笑他们笑他们不懂你的正不懂你的○滑也笑他们○感度太高。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加了你的父母默默无言说我的儿子在家里搞了杯子一个月油费比之前贵了几百块。
16.快过年了不要再讨论什么顶会、投稿、CCF-A 了。带你AI炼丹模型回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的transformer。亲戚朋友吃饭问你收获了什么你说我刚刚调了一下超参数top-1accurate高了0.01%。亲戚朋友都惜逼了你还在心里默默嘲笑他们笑他们不懂你的视觉transformer不懂你的变分自编码器。也笑他们早晚都要被AI取代。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子在家里搞了一个Teslap4炼丹炉改的散热一开起来瑜响一个月电费比之前贵了几百块。
17.快过年了不要再讨论什么PLTTypeSystem 了。你带你的Compilers和ATTaPL回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的 monadic parser 和 sound type checker。亲戚朋友吃饭问你收获了什么你说我组了一个 sound但不total的dependent typetheorem prover亲戚们惜逼了你还在心里默默嘲笑他们笑他们不懂你的dependenttype不懂你的tactics也笑他们还在使用垃圾类型系统和弱类型的编程语言。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加新薪了你的父母默默无言说我的儿子成天拿着电脑写一堆希腊文鬼画符动不动来一句XXX定理可以被我证明了写完之后开起来CPU风扇喻瑜响、家里电表走得越来越快了。
18.快过年了不要再讨论什么DSP母带处理软音源了。你带你的破电脑回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里用这网盘搞来的盗版音源编曲。亲戚朋友吃饭问你收获了什么你说我用了搓了一个低常数的NLogN卷积亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂响度均衡不懂什么是sidechainwalkingbass wobblechord不懂你的32位I3E浮点能把音频信噪比压到1550db也笑他们连采样定理都不知道。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加新了你的父母默默无言说我的儿子整了个几个二次元CD软件盒子天天就坐在电脑前用鼠标拖块块。
19.快过年了不要再讨论什么6热管、液金散热 tdp了。带你游戏本回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的破游戏本。亲戚朋友吃饭问你收获了什么你说我刚刚买了一个 3070笔记本2077能跑120帧。亲戚朋友都忆逼了你还在心里默默嘲笑他们笑他们不懂你的高性能不懂你的高画质。也笑他们还在用好几年前的轻薄本。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加新薪了你的父母默默无言说我的儿子在家里搞了个比书还厚的笔记本噪音还贼大一个月电费比之前贵了几百块。
20.快过年了不要再讨论什么top、gasket、tray 了。你带你的键盘回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的破键盘。亲戚朋友吃饭问你收获了什么你说我组了一个gasket的键盘亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂你的弹软不懂你的gasket也笑他们只会用薄膜键盘。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加新薪了你的父母默默无言说我的儿子装了个打字机开起来灯闪闪家里电表走得越来越快了。
21.过年了不要再讨论什么单核多核、timespy、 内存延迟和效能、all inone。你带主机回到家并不能带来任何实质性作用朋友们兜里掏出一大把年终奖吃喝玩乐你默默的在家里跑r23 3dmarkaida64。亲戚朋友吃饭问你收获了什么你说我把二代海力士超到了8800c32 4090超到了3G13900K风冷R23上4W亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂ddr5不懂AD102的强劲性能不懂大小核架构的爆炸性能也笑他们还在用过气的ddr3和四核i5。你父母的同事都在说自己的子女一年的收获儿子买了新房姑娘买了新车你的父母默默无言说我的儿子搞了一个闪彩色灯光的大箱子一按按钮就喻瑜的响家里电表走得越来越快了。
22.快过年了不要再讨论什么NAVI31 AMDYES、790OXTX了。你带你的破显卡回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的7900XTX。亲戚朋友吃饭问你收获了什么你说我把7900XTX拉功耗墙超到了3GHz打游戏数高了15%亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂你的MPT不懂你调整频率、不懂你的3x8PIN非公供电也笑他们门没用过2022年的旗舰显卡。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子搞了张AMD的吹风机每天晚上卧室里都鸣鸣的响家里电表都起飞了。
23.快过年了,不要再讨论什么矿卡、翻新、磐镭、 卡诺基了。你带你的破显卡回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的RX580。亲戚朋友吃饭问你收获了什么你说我两百块收了个卡诺基580刷蓝宝石BIOS能过烤机亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂你的矿卡翻新不懂你强刷vbios、不懂你的超频也笑他们连AMD掉驱动怎么解决都不知道。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子搞了个破显卡风扇转起来瑜喻响、家里电表走得越来越快了。
24.快过年了不要再讨论什么2246en、2228H 2263xt了。你带你的固态硬盘U盘回到家并不能给你带来任何实质性作用朋友们兜里掏出一大把钱吃喝玩乐你默默的在家里摆弄你的破电脑。亲戚朋友吃饭问你收获了什么你说我组了一个速度超快的u盘还是2T的亲戚们忆逼了你还在心里默默嘲笑他们笑他们不懂你的刮削器不懂你的超大容量固态速度超快也笑他们没有大容量固态。你父母的同事都在说自己的子女一年的收获儿子买了个房女儿买了个车姑娘升职加薪了你的父母默默无言说我的儿子装了个固态硬盘速度嗖嗖的快开电脑贼快家里电表经常跳闸而已。

199
content/about-OpenSource.md Normal file
View File

@ -0,0 +1,199 @@
+++
title = "乱七八糟:开源软件与协议"
date = 2024-03-03
[taxonomies]
tags = ["乱七八糟"]
+++
前言 本文旨在介绍开源以及开源许可证,这些许可证规定了使用、修改和分发开源软件的条件。通过了解不同类型的开源许可证及其特点,读者将能够更好地理解在开发和使用开源软件时的法律和道德责任。
<!-- more -->
## 开源的概念
「开源」一词对应英文 Open Source最初起源于软件开发领域因此也称为「开放源代码」对应的软件则称为开源软件Open Source Software简称 OSS。除了我们熟知的开源软件以外开源的表现形式还有很多例如开源硬件Open Source Hardware、开放设计Open Design、开放文档Open Document等等。开源的目的是分享共享、加速创新可以说开源已经成为一种超越软件生产界限的运动和工作方式。
对于很多刚踏入软件这个行业的小伙伴来说「开源」是个比较陌生的概念。但是随着经手项目逐渐增多会发现很多项目尤其是一些大型项目经常会引用到别人一些优秀的开源代码而这些优秀的开源代码通常都会在最开始简单地附上一段关于授权的声明或在项目根目录下提供完整的授权声明文件比如「The project is licensed under the Apache 2 license.」,诸如此类便是「开源许可证」。
开源不等于免费,开源也不等于没有约束
### **开源的好处**
#### **1. 透明度和安全性**
开源软件的代码是公开的,任何人都可以检查和改进它。这使得潜在的安全漏洞更容易被发现和修复,提升了软件的安全性。
#### **2. 促进创新**
开源允许开发者自由研究和修改代码推动技术进步。例如Linux、Python、TensorFlow 等开源项目极大地促进了计算机科学和人工智能的发展。
#### **3. 降低成本**
企业和个人可以免费使用开源软件,而不需要支付高昂的许可证费用。例如,使用 Linux 服务器代替 Windows Server 可以减少 IT 成本。
#### **4. 快速迭代和社区支持**
开源项目通常由全球开发者社区维护和改进Bug 修复和新功能开发的速度比封闭源代码的软件更快。例如,开源浏览器 Firefox 就依赖社区贡献不断改进。
#### **5. 避免供应商锁定**
开源软件允许用户自由选择和修改代码而不是被某个公司的专有软件绑定避免了供应商锁定的问题。例如MySQL 和 PostgreSQL 等开源数据库是很多企业的首选,避免依赖单一厂商。
## 开源软件
开源软件顾名思义是指能够免费且不受限制地使用、再开发、再发布的软件。但在狭义上只有符合开放源代码促进会Open Source Initiative定义的软件才能被称为开源软件。这个定义提出了十个特征必须全部符合才能认定为开源软件。
这些特征包括:
```
可自由再分发。
提供源代码。
允许衍生作品。
不得过度限制原始代码的修改。
不得歧视特定人、群体或用途。
必须「技术中立」等。
```
根据这些标准一些看似自由使用的软件可能不符合开源软件的定义。例如Elasticsearch原本使用Apache 2.0授权是真正的开源软件。但面对云服务提供商如AWS等将其用于营利目的却不回馈改进的情况Elasticsearch在2021年1月选择了SSPLServer Side Public License服务器端公共许可证和Elastic License两种许可证并行SSPL要求如果将程序的功能或修改后的版本作为服务提供给第三方则必须免费公开提供服务源代码这违背了开源软件的定义。另一方面Elastic License要求不能向第三方提供主机或托管服务也违反了开源软件的定义因此也不算严格意义上的「开源」。
## 常用优秀开源软件
以下是一些常用的跨平台开源软件,涵盖了多个领域,包括办公、开发工具、多媒体处理等。
| 分类 | 软件名称 |
|--------------|---------|
| **输入法** | Rime, Fcitx |
| **浏览器** | Brave, FireFox, Floorp |
| **解压** | PeaZip |
| **下载器** | Motrix |
| **播放器** | VLC |
| **密码管理器** | KeePassXC, BitWarden |
| **邮件客户端** | Thunderbird |
| **Office** | OnlyOffice, LibreOffice |
| **RSS 阅读器** | Fluent Reader, News |
| **电子书阅读器** | Readest, Koodo Reader & Legado, KOReader, Celibre |
| **本地音乐** | VLC, Harmonoid, Strawberry, Metro |
| **截屏** | Flameshot, Snipate |
| **录屏** | OBS Studio |
| **Matrix** | Element/SchildiChat, FluffyChat, MatterMost |
| **网盘** | Alist, NextCloud |
| **笔记** | Joplin, logseq, siyuan, notesnook, Trillium, Bluestone |
| **文件同步** | SyncThing |
| **文件传送** | LocalSend, KDE connect |
| **远程文件传输** | muCommander, cyberduck |
| **S3 文件管理** | muCommander |
| **SSH 终端** | Tabby, electerm, Termux, NxShell |
| **代码编辑** | VSCodium |
| **远程桌面** | RustDesk, moonlight |
| **内网穿透** | NPS, ZeroTier, Tailscale/HeadScale, Nconnect |
## 开源许可证
开源许可证是软件许可证的一种特殊形式,用于规定开源软件的使用、修改、分享等相关事宜。它是一种格式合同,涉及版权、专利、商标等权利义务,自动生效。
在美国一些法院认为软件许可证是合同contract一些法院则认为是许可license。两者的区别在于许可在传统上是由地产或物主作出的目的在于允许他人使用自己的地块或物品。因此它是单方向的不构成完整的合同而是作为合同的一个要素用来和他人交换的条件。由于合同和许可之分在法律上有着重要的意义它们的违约救济和版权侵权救济等方面有着不同的规定。
与美国不同,大陆法系国家如中国普遍认为开源软件许可证构成合同,但这种合同是事先规定好的标准化格式合同,并且自动生效。
开源许可证的种类繁多据不完全统计广义上的开源许可证超过200种其中OSI批准的许可证有96个。这些许可证的内容各不相同有些条款非常有意思例如啤酒软件许可证Beerware License规定用户与作者聚会时可以请作者喝一杯啤酒Jason Hunter 许可证规定,如果将该许可证下的代码用于商业目的,那么项目开发团队的所有成员都必须拥有 Jason Hunter 撰写的《Java Servlet编程》最新版。
## 常见开源许可证
世界上的开源许可证Open Source License大概有上百种而常见的开源协议大致有GPL、BSD、MIT、Mozilla、Apache和LGPL等。
![alt text](https://www.ruanyifeng.com/blogimg/asset/201105/free_software_licenses.png)
## Apache License
Apache LicenseApache许可证是Apache软件基金会发布的一个自由软件许可证。
Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和BSD类似同样鼓励代码共享和最终原作者的著作权同样允许源代码修改和再发布。但是也需要遵循以下条件
- 需要给代码的用户一份 Apache Licence。
- 如果修改了代码,需要再被修改的文件中说明。
- 在衍生的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
- 如果再发布的产品中包含一个 Notice 文件则在Notice文件中需要带有 Apache Licence。你可以在 Notice 中增加自己的许可,但是不可以表现为对 Apache Licence 构成更改。
Apache Licence 也是对商业应用友好的许可。使用者也可以再需要的时候修改代码来满足并作为开源或商业产品发布/销售。
使用这个协议的好处是:
- 永久权利 一旦被授权,永久拥有。
- 全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
- 授权免费 无版税, 前期、后期均无任何费用。
- 授权无排他性 任何人都可以获得授权
- 授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
## BSD
BSD 是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用修改源代码也可以将修改后的代码作为开源或者专有软件再发布。 当你发布使用了BSD协议的代码或则以BSD协议代码为基础做二次开发自己的产品时需要满足三个条件
- 如果再发布的产品中包含源代码则在源代码中必须带有原来代码中的BSD协议。
- 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
- 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码也允许使用或在BSD代码上开发商业软件发布和销售因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议因为可以完全控制这些第三方的代码在必要的时候可以修改或者二次开发。
## GPL
GPL GNU General Public License GNU通用公共许可协议。
Linux 采用了 GPL。
GPL 协议和 BSD, Apache Licence 等鼓励代码重用的许可很不一样。GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种 linux包括商业公司的 linux 和 linux 上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
## LGPL
LGPL是GPL的一个为主要为类库使用设计的开源协议。和 GPL 要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改 LGPL 协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权避免有人利用开源代码复制并开发类似的产品。
## MIT
MIT是和BSD一样宽范的许可协议,源自麻省理工学院Massachusetts Institute of Technology, MIT又称X11协议。作者只想保留版权,而无任何其他了限制。MIT与BSD 类似,但是比 BSD 协议更加宽松是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有jquery、Node.js。
MIT与BSD类似但是比BSD协议更加宽松是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有jquery、Node.js。
## MPL (Mozilla Public License 1.1)
MPL 协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益它要求基于这种软件的修改无偿贡献版权给该软件。这样围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改无偿使用得。MPL 软件对链接没有要求。
## EPL (Eclipse Public License 1.0)
EPL允许 Recipients 任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。
使用EPL协议需要遵守以下规则
当一个 Contributors 将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布.除非你得到了原"源码"Owner 的授权;
EPL协议下,你可以将源码不做任何修改来商业发布.但如果你要发布修改后的源码,或者当你再发布的是 Object Code 的时候,你必须声明它的 Source Code 是可以获取的,而且要告知获取方法;
当你需要将EPL下的源码作为一部分跟其他私有的源码混和着成为一个 Project 发布的时候,你可以将整个 Project/Product 以私人的协议发布,但要声明哪一部分代码是EPL下的,而且声明那部分代码继续遵循EPL
4.独立的模块(Separate Module),不需要开源。
## Creative Commons 知识共享协议
Creative Commons (CC) 许可协议并不能说是真正的开源协议,它们大多是被使用于设计类的工程上。 CC 协议种类繁多,每一种都授权特定的权利。 一个 CC 许可协议具有四个基本部分,这几个部分可以单独起作用,也可以组合起来。下面是这几部分的简介:
- 署名 作品上必须附有作品的归属。如此之后,作品可以被修改,分发,复制和其它用途。
- 相同方式共享 作品可以被修改、分发或其它操作但所有的衍生品都要置于CC许可协议下。
- 非商业用途 作品可以被修改、分发等等,但不能用于商业目的。但语言上对什么是"商业"的说明十分含糊不清 (没有提供精确的定义),所以你可以在你的工程里对其进行说明。例如,有些人简单的解释"非商业"为不能出售这个作品。而另外一些人认为你甚至不能在有广告的网站上使用它们。 还有些人认为"商业"仅仅指你用它获取利益。
- 禁止衍生作品
CC 许可协议的这些条款可以自由组合使用。大多数的比较严格的CC协议会声明 "署名权,非商业用途,禁止衍生"条款这意味着你可以自由的分享这个作品但你不能改变它和对其收费而且必须声明作品的归属。这个许可协议非常的有用它可以让你的作品传播出去但又可以对作品的使用保留部分或完全的控制。最少限制的CC协议类型当属 "署名"协议,这意味着只要人们能维护你的名誉,他们对你的作品怎么使用都行。
CC 许可协议更多的是在设计类工程中使用,而不是开发类,但没有人或妨碍你将之使用与后者。只是你必须要清楚各部分条款能覆盖到的和不能覆盖到的权利。
## 参考
- [开源软件指南](https://opensource.guide/zh-hans/)
- [Browse Software Licenses and Summaries](https://www.tldrlegal.com/browse)
- [开源协议检索](https://opensource.org/license)
- [开源指北](https://oschina.gitee.io/opensource-guide/)

217
content/about-RSS-Read.md Normal file
View File

@ -0,0 +1,217 @@
+++
title = "搭建个人信息流:RSS阅读指南"
date = 2024-03-05
[taxonomies]
tags = ["乱七八糟"]
+++
前言 RSS 提供了一种数据格式,以 XML可扩展标记语言的形式组织信息包括文章标题、摘要、链接和发布日期等。这些信息形成了所谓的“订阅源”Feed用户可以使用RSS阅读器Feed Reader来订阅这些源。
<!-- more -->
## 一.什么是RSS
如果你使用过类似红板报,轻芒杂志,摸鱼 kiki,今日热榜等 APP应该对 RSS 并不陌生。
RSSReally Simple Syndication是一种用于发布经常更新的内容的标准通常用于博客、新闻网站和其他线上发布的信息。RSS 允许用户订阅这些站点的内容,以便在内容有更新时,用户能够获得及时的通知。
基本上RSS 提供了一种数据格式,以 XML可扩展标记语言的形式组织信息包括文章标题、摘要、链接和发布日期等。这些信息形成了所谓的“订阅源”Feed用户可以使用 RSS 阅读器Feed Reader来订阅这些源。
RSS 的主要优势包括:
- 即时通知:用户订阅了 RSS 源后,当源中的内容有更新时,用户将立即收到通知,而无需手动检查网站。
- 集中管理:使用 RSS 阅读器,用户可以集中管理多个网站的更新,而无需逐个访问这些站点。
- 隐私保护RSS 订阅不需要提供个人信息,用户只需关注感兴趣的内容,而无需注册账户。
- 定制内容:用户可以选择订阅感兴趣的主题或网站,定制他们的信息流。
- 减少信息过载:通过只关注真正感兴趣的内容,用户可以减少信息过载,集中注意力在最关键的信息上。
如果我们想更高效地获取信息,不在多个应用间来回切换,另一方面拒绝算法给我们推荐的内容,那么建议用回原始的 RSS。
虽然 RSS 曾经非常流行但随着社交媒体和其他信息传递方式的兴起逐渐成为时代的眼泪。然而RSS 仍然是一种有效的信息分发和获取方式,许多网站和博客仍提供 RSS 源。题主曾经计划使用 Kindle 作为专门的RSS阅读器后来由于过于昂贵而作罢。
## 二.如何进行RSS阅读
基本上有以下几步:
- 寻找 RSS 订阅源
- 确定 RSS 客户端
- 自建 RSS 服务端(可选)
**寻找RSS订阅源**
要知道一个网站是否支持 RSS 订阅最直接的方法就是看网站的底部或侧边栏是否有 RSS 图标。一般来说图标所指向的地址就是该网站的订阅链接可以直接点击 跳转到 RSS 客户端内进行订阅,也可以复制粘贴按钮中的地址到自己在用的 RSS 服务中订阅这些网站中的内容。
在浏览器中推荐使用 RSS Hub radar 插件可以自动找到可用的RSS源并提示。
有时候网站不会直接给出订阅源,这时候你也可以尝试在网站域名后面加上 /feed  /rss 或许可以碰巧猜中比如少数派的 RSS 订阅链接就是 https://sspai.com/feed。当然你也可以直接通过搜索引擎通过 网站名 + RSS 的关键字进行搜索往往都能找到支持网站的 RSS 链接。
MoreRSS这个网站提供中、英文的RSS源并且显示源的订阅量对于一些受欢迎的英文 RSS还提供了中文翻译。但此网站还在建设中收录量不大、功能也不完善可以关注其更新。
有一些中文博客聚合网站收录了多则1000+少则几百的中文博客PS.经查世界上现存的大熊猫数量约2600只知名的有十年之约、博友圈、BlogFinder 、积薪、川流 等,不一一列举了。
Feedsearch如果在网站的首页看不到 RSS 信息,可以使用这个 RSS 源搜索服务,实测准确度很高,我用它找出来很多隐藏的 RSS 源,如果这个网站搜不到,那可能是网站确实没有提供 RSS。
RSSAnything ,如果 RSSHub 也没有找到需要的 RSS可以尝试使用这个网站生成 RSS这是我试过的效果最好的但要看运气有的时候效果很好有的时候达不到期望值。
有一些针对具体的社会化媒体生成 RSS 的服务,但或者收费,或者稳定性欠佳失效,或者收费且稳定性欠佳失效(我就订阅了一个微信公众号的 RSS 服务没用多久就失效了还不退款想了下就不在这里列举了感兴趣可以直接在https://morerss.com/tools_zh.html查找。
>英文RSS源翻译
可以把外语信息源翻译为中文的,这里推荐的服务器是 RSS-Translator功能强大但需要一定的能力。MoreRSS 基于 RSS-Translator 的服务,翻译了一批优质的外语信息源,可以直接订阅。
当然,我们也可以直接导入现有的订阅源,一般为 OPML 文件,如 RSS Source;或者调用第三方的 RSS 服务,如 anyfeeder等等。
这里介绍一个 RSS 神器,由 DIygod 发起的RSShub项目
RSSHub 是一个开源项目旨在为用户提供一个集中化、可定制的RSSReally Simple Syndication源的生成器。该项目的目标是通过从各种网站和平台获取信息将其聚合到用户自定义的RSS源中从而使用户能够方便地订阅他们关心的内容。
- 开源性质: RSSHub 是一个开源项目,其源代码可以在 GitHub 上找到。这意味着任何人都可以查看、使用、修改和贡献代码。
- 支持的站点: RSSHub 支持从各种网站和平台提取数据,包括但不限于新闻网站、社交媒体、博客、视频分享平台等。用户可以根据自己的需求选择要订阅的站点。
- 自定义生成: 用户可以通过指定参数和规则来定制他们的 RSS 源,以便获取特定主题或关键字的更新。这使得用户能够灵活地定制他们的订阅流。
- 社区参与: RSSHub 是一个社区驱动的项目,有很多开发者和贡献者参与其中。社区可以通过 GitHub 进行讨论、报告问题和提交代码。
- 部署方式: RSSHub 可以自行部署用户可以在自己的服务器上搭建RSSHub实例以便更好地控制和定制生成的RSS源。
**确定RSS客户端**
RSS客户端非常丰富包括 Android 端IOS 端Windows 端linux 端,浏览器插件,甚至 Vscode 插件(用来摸鱼)等等。这里推荐一些阅读器,当然,也可以选择类似 Feedly 的服务商。
- AndroidNews在Fdorid里可下载中文名为“新闻”界面简洁功能全面支持本地或连接自建服务端。
- IOSInoreader 其提供了方便的阅读体验,支持离线阅读、标签和快速搜索。
- WindowsFluent Reader,在github上开源界面优雅支持本地或连接自建服务端。
- linuxFluent Reader或Newsboat 是 Newsbeuter 的一个分支,一款文本控制台 RSS/Atom 订阅阅读器。
**自建RSS服务端**
开源的RSS服务端软件可以用来搭建个人的RSS阅读服务
- FreshRSS: FreshRSS 是一款简单易用的自建 RSS 服务端软件。它提供了丰富的功能,包括标签、筛选器、阅读统计等,并支持多用户。
- Miniflux: Miniflux 是一个轻量级的 RSS/Atom 阅读器服务,支持自建。它采用 Go 语言编写,具有快速响应和简洁的用户界面。
- Tiny Tiny RSS (tt-rss): Tiny Tiny RSS 是一款功能丰富的自建RSS服务端软件提供了类似于 Google Reader 的界面,并支持标签、过滤器、插件等。
- Selfoss: Selfoss 是一款支持多种数据源包括RSS的自建聚合器。它的界面简洁支持标签、过滤器和插件同时也提供了跨平台的客户端。
- Miniflux 2: 不要与上面提到的 Miniflux 混淆Miniflux 2 是 Miniflux 的一个全新版本,同样支持自建 RSS 服务。
这里以MiniFlux为例其优势在与
- 程序设计极简,不处理任何订阅之外的事情。
- 程序无外部依赖,运行性能高。
- 支持自动抓取并缓存图片,加速浏览。
- 有限支持自动将摘要替换为全文进行抓取。
- 支持多账号登录,支持 Fever API ,允许客户端从外部登录。
- 支持集成 PinBoard 、Instapaper、 Pocket、Wallabag、Nunux Keeper 等服务。
- 提供 Open API、书签快速订阅脚本。
- 维护者和社区相对活跃,更新频率高。
**步骤:**
1.安装docker 和docker-compose
2.Docker 安装 miniflux
1创建并进入你想安装 Miniflux 的文件夹:
``mkdir ~/miniflux`` # 在根目录创建名为miniflux的文件夹
``cd ~/miniflux`` # 进入miniflux文件夹
2创建docker-compose.yml文件
``nano docker-compose.yml`` # 使用nano编辑器创建会自动打开文件以写入内容
3在文件中写入以下内容并保存
```
version: '3.4'
services:
miniflux:
image: miniflux/miniflux:latest
ports:
- "127.0.0.1:8080:8080" #调整一增加localhost ip 并改port为8080
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin # 登录Miniflux的用户名可自定义
- ADMIN_PASSWORD=password # 登录Miniflux的密码可自定义至少6位
- "BASE_URL=https://enter.your.url" # 调整二输入想用来访问Miniflux的域名
healthcheck:
test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
db:
image: postgres:latest
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
volumes:
- miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
volumes:
miniflux-db:
```
该 docker-compose.yml 文档内容基于 Miniflux 官方文档 ,并在细节上进行了调整。调整有两处:一是将 port 改为127.0.0.1:8080:8080主要目的是错开常用port 80并调整 localhost 为127.0.0.1来跟 nginx 的设置一致(如不调整, miniflux 将使用0.0.0.0,无法顺利运行 nginx );二是在 miniflux 的environment 中加入新的 configuration BASE_URL请将内容换为你想用来访问 Miniflux 的域名。
//如何用 nano 保存文件:可以使用 ctrl+X在退出编辑时选择Y来保存所有更改再敲一次回车便可以回到命令行。//
4运行以下代码进行安装
``docker-compose up -d``
在浏览器中访问服务器ip:端口号如http://123.45.67.890:8080如显示登录界面即代表安装成功。域名解析和反代步骤略。
## 后记
[RSS源](https://morerss.com/tools_zh.html)

View File

@ -0,0 +1,66 @@
+++
title = "乱七八糟:个人博客搭建"
date = 2023-10-12
[taxonomies]
tags = ["乱七八糟"]
+++
前言 个人博客的搭建有诸多框架的选择。本文以Zola框架为例介绍如何部署该静态站点并将其托管到Paas平台上。
<!-- more -->
## 前情回顾
在互联网冲浪的过程中我们常常看到许多独立站点有各种各样的主题样式这些站点见证了互联网的发展历史。从最初的手工编写HTML页面到后来的内容管理系统CMS如WordPress的兴起再到如今流行的静态网站生成器SSG如HugoHexoZola等等。
如今静态网站生成器以其简单易用和高效性而备受青睐。其工作原理是在本地计算机上生成整个网站的HTML文件然后将这些静态文件上传到服务器这样用户访问网站时就可以直接从服务器上获取到HTML文件而无需动态生成页面。这种方式不仅能够提高网站的访问速度还可以减轻服务器的负载压力。
## 搭建博客
首先明确你需要的架构,一般有两种选择:
- 使用现有的架构,包括Hugo,zola,astro等等,可以在[这个网站](https://jamstackthemes.dev/)上面查看效果;
- 或者从头写一个框架需要HTML/CSS/JS等知识
随后需要列出你想要的显示效果:
- 风格包括命令行风格极简风格MD3风格等等;
- 布局,是响应式还是传统布局?
你需要那些功能?
- 黑暗/白天模式切换;
- 高斯模糊?动态取色?
- PPT般的动效
- 访问人数和运行天数统计?
- Tag分类和时间排序
- 搜索功能和RSS
需要处理哪些外部依赖?
- 域名和paas平台
- 图床还是直接嵌入图片?
- 是否需要自动编译?
- 是否需要多平台发布?
- 是否需要加密特定文章?
以上的功能和需求是否对SEO和界面相应时间造成影响
## 构建过程
- 安装Zola到一个文件夹并为其命名
- 选择主题theme将下载好的主题与Zola同名文件夹合并
- 运行zola build和zola serve,在本机浏览器127.0.0.11111上查看站点
- 使用notion,obsdian,bluestone等软件写markdown格式的文章
- 保存文章到content文件夹中
- 随后再次运行运行zola build和zola serve生成public文件夹
- 新建一个Github仓库用Git连接并push上去
- 在Vercel/Fleek等平台将仓库部署并设置域名。
## 后记
通过简单的步骤,我们已经快速地创建一个具有自定义主题和样式的独立站点,并将其发布到互联网上供他人访问。而在这期间,各种工具链的完善和前端基本原理了解也是收获的一部分。
## 参考
- [zola官方文档](https://www.getzola.org/documentation/getting-started/overview/)
- [zoal-terminimal主题](https://github.com/pawroman/zola-theme-terminimal)
- [中文排版指南](https://github.com/aaranxu/chinese-copywriting-guidelines)
- [如何提高用户网页阅读体验](https://atpx.com/blog/improving-online-reading-experience/)

View File

@ -0,0 +1,78 @@
+++
title = "乱七八糟:常见发音错误术语集合"
date = 2023-08-25
[taxonomies]
tags = ["乱七八糟"]
+++
前言 中文和英语发音习惯不同,容易引起误解。本文旨在帮助您准确发音常见的科技术语,欢迎随时补充。
<!-- more -->
**常见发音错误指南:公司/产品名**
Youtube: 正确念法是 "You-tube" [tju:b],而不是 "优吐毙",应该是 "优tiu啵"。
Skype: 应该念为 [ˈskaɪp],而不是 "死盖屁",应该是 "死盖破"。
Adobe: 正确的发音是 [əˈdəʊbi],不是 "阿斗伯",而是 "阿兜笔"。
C#: 应该念为 "C Sharp",即"C煞破"。
GNU: 正确的发音是 [(g)nuː] 即"哥怒"。
GUI: 应该念为 [ˈɡui],即"故意"。
JAVA: 正确的发音是 [ˈɑːvə],而不是 "夹蛙",应该是 "扎蛙"。
AJAX: 应该念为 [ˈeɪdʒæks],而不是 "阿贾克斯",应该是 "诶(ei) 贾克斯"。
Ubuntu: 正确的发音是 [uˈbuntuː],而不是 "友邦兔",应该是 "巫不恩兔"。
Debian: 应该念为 [ˈdɛbiən],即"得(dei)变"。
Linux: 正确的发音有两种,[ˈlɪnəks] 或 [ˈlɪnʊks]"丽娜克斯" 或 "李扭克斯"都可以。
LaTeX: 正确的发音是 [ˈleɪtɛk] 或 [ˈleɪtɛx] 或 [ˈlɑːtɛx] 或 [ˈlɑːtɛk],即"雷泰克" 或 "拉泰克"。
GNOME: 念法可以是 [ɡˈnoʊm] 或 [noʊm],即"格弄姆" 或 "弄姆"。
App: 应该念为 [ˈæp],即 "阿破"。
null: 正确的发音是 [nʌl],即"闹"。
jpg: 应该念为 [ˈdʒeɪɡ],而不是 "勾屁记",应该是 "zhei派个"。
WiFi: 正确的发音是 [ˈwaɪfaɪ],即"歪fai"。
mobile: 念法可以是 [moˈbil] 或 [ˈmoˌbil] 或 [ˈməubail],即"膜拜哦" 或 "牟bou"。
integer: 正确的发音是 [ˈɪntɪdʒə],而不是 "阴太阁儿",应该是 "音剃摺儿"。
cache: 应该念为 [kæʃ],而不是 "卡尺",即"喀什"。
@: 应该念为 "at"。
Tumblr: 应该念为 "Tumbler",而不是 "贪不勒"。
nginx: 正确的发音是 "Engine X",应该是 "恩静 爱克斯"。
Apache: 应该念为 [əˈpætʃiː],即"阿趴气"。
Lucene: 正确的发音是 [ˈluːsin],即"鲁信"。
MySQL: 应该念为 [maɪ ˌɛskjuːˈɛl] 或 [maɪ ˈsiːkwəl],可以是 "买S奎儿" 或 "买 吸扣"。
Exposé: 念法可以是 [ɛksˈpəʊzeɪ]重音在Z上。
RFID: 官方念法是四个字母分开读 "R F I D"。
JSON: 应该念为 "jason",即"zhei森"。
Processing: 重音在 "Pro" 上。
avatar: 正确的发音是 [ˌævə'tɑr],即"艾瓦塌儿"。
## 后记
虽然许多的词汇常常被错误发音但在中国遵守拼音原则是入乡随俗的一种表现且往往并没有所谓的官方读法不必太过于纠结100%纯正的读法。

View File

@ -0,0 +1,73 @@
+++
title = "乱七八糟:常用实用快捷键"
date = 2024-05-23
[taxonomies]
tags = ["乱七八糟"]
+++
前言 在日常使用浏览器时,掌握一些快捷键和技巧可以节省大量时间,提高工作和学习效率。通过学习和实践,能够更加轻松地应对各种网页浏览场景,让浏览器成为工作和学习的得力助手。
<!-- more -->
> 适用与大部分浏览器
## Ctrl系列
### 常用
- Ctrl + A --------- 全选
- Ctrl + C --------- 复制
- Ctrl + X --------- 剪切
- Ctrl + V --------- 粘贴
- Ctrl + F --------- 查找
- Ctrl + Q --------- 退出
- Ctrl + T --------- 新建标签页
- Ctrl + W --------- 关闭标签页
- Ctrl + N --------- 新建窗口
- Ctrl + Shift + P --------- 新建隐私浏览窗口
### 历史
- Ctrl + H --------- 历史侧栏
- Ctrl + Shift + H --------- 我的足迹窗口(历史)
- Ctrl + Shift + Del --------- 清除最近历史记录
### 书签
- Ctrl + D --------- 将此页加为书签
- Ctrl + I --------- 页面信息
- Ctrl + Shift + O --------- 显示全部书签(我的足迹窗口)
- Ctrl + B / Ctrl + Shift + B --------- 书签 侧栏/顶栏
### 下载与插件
- Ctrl + Shift + Y --------- 下载
- Ctrl + Shift + A --------- 附加组件
- Ctrl + Shift + Y --------- 下载
- Ctrl + Shift + A --------- 插件
### 控制台与开发
- Ctrl + Shift + K --------- Web 控制台
- Ctrl + Shift + C --------- 查看器
- Shift + F7 --------- 样式编辑器
- Shift + F5 --------- 分析器
- Ctrl + Shift + E --------- 网络
- Ctrl + U --------- 页面源码
- Ctrl + Shift + J --------- 浏览器控制台
### 标签页与界面
- Ctrl + S --------- 界面保存
- Ctrl + + --------- 放大
- Ctrl + - --------- 缩小
- Ctrl + 0 --------- 重置缩放
- Ctrl + K/J --------- 搜索
- Ctrl + Home/End --------- 到文件头/尾
- Ctrl + Page Up --------- 打开左邻的标签页
- Ctrl + Page Down --------- 打开右邻的标签页
- Ctrl + Shift + Page Up --------- 将当前标签页左移
- Ctrl + Shift + Page Down --------- 将当前标签页右移
### 其他
- Alt + space --------- KDE搜索栏
- Alt + ->/<- --------- 前进/后退
- Alt + 数字 --------- 选择标签页1到8
- Alt + M --------- 静音
- End --------- 到达页尾
- Home --------- 到达页首
- F6 --------- 地址栏
## 后记
希望本文的内容能够对读者有所帮助让大家在使用浏览器时能够更加得心应手事半功倍

209
content/about-cslearning.md Normal file
View File

@ -0,0 +1,209 @@
+++
title = "乱七八糟:计算机科学优质视频"
date = 2024-05-31
[taxonomies]
tags = ["乱七八糟"]
+++
前言 CSdiy珠玉在前,为CS教育做出了极大贡献.这里分享一些优质的CS学习相关视频.
<!-- more -->
## 计算机组件发展历史
- [CPU发展史](https://www.bilibili.com/video/BV1ME421A78n/)
- [BIOS发展史](https://www.bilibili.com/video/BV1gb421h7C4/)
- [存储器发展史](https://www.bilibili.com/video/BV1H5m6YkE9c/)
- [显示器发展史](https://www.bilibili.com/video/BV1h2w5eREfD/)
- [计算机发展史](https://www.bilibili.com/video/BV1ru411M7Hc/)
- [操作系统发展史](https://www.bilibili.com/video/BV1Zc411D7sG/)
## 计算机组件原理
- [【装机教程】全网最好的装机教程,没有之一](https://www.bilibili.com/video/BV1BG4y137mG/)
- [从零开始认识主板](https://www.bilibili.com/video/BV1xQ4y1b7JS/)
- [从零开始认识显卡](https://www.bilibili.com/video/BV1xE421j7Uv/)
- [如何合理科学的选择电源功率的大小?](https://www.bilibili.com/video/BV1Ab411d7zn/)
- [OLED与LCD屏幕工作原理与优劣科普](https://www.bilibili.com/video/BV1Wz411B7Tf/)
- [LCD OLED QLED mini-LED等显示技术的区别](https://www.bilibili.com/video/BV1Me4y1k72b/)
- [显示器的色域和色准是什么东西?](https://www.bilibili.com/video/BV1kk4y167rk/)
- [Gsync Freesync 垂直同步工作原理科普](https://www.bilibili.com/video/BV1FK4y1x7bk/)
- [电脑散热器工作原理科普](https://www.bilibili.com/video/BV1Ca4y1W73e/)
- [硬盘的SATA M.2 NGFF NVME是什么意思详解硬盘的总线协议与接口](https://www.bilibili.com/video/BV1Qv411t7ZL/)
- [键鼠是怎么工作的8K回报率有意义吗](https://www.bilibili.com/video/BV19T4y1R71r/)
- [音响耳机麦克风这些设备是怎么工作的?](https://www.bilibili.com/video/BV1ca411t7qf/)
- [如何选择存储卡SD、TF和CFe卡有哪些区别](https://www.bilibili.com/video/BV1G94y1g7Up)
## 计算机博物志
- [DES的生与死](https://www.bilibili.com/video/BV1qW4y1L7tN/)
- [MD5为何不再安全](https://www.bilibili.com/video/BV1S541127qR/)
- [战争密码(上集)如何复刻一台恩格玛机](https://www.bilibili.com/video/BV1DS4y1R7hM/)
- [战争密码(中集)蝴蝶的翅膀](https://www.bilibili.com/video/BV1M34y1o7ca/)
- [战争密码(下集)炸弹机](https://www.bilibili.com/video/BV1PL4y1H77Z/)
- [被遗忘的科学天才:沃尔特·皮茨](https://www.bilibili.com/video/BV1y5411D7a6/)
- [最后的黑客:理查德·马修·斯托曼](https://www.bilibili.com/video/BV11R4y1b7zc/)
## 计算机体系结构
- [普林斯顿大学-计算机科学:算法、理论和机器(GPT 翻译)](https://www.bilibili.com/video/BV1Ct42177Y6/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [计算机体系结构( 2024 年春)](https://www.bilibili.com/video/BV1bx421D7Xd/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [台湾科技大学:计算机组成 2023-刘一宇](https://www.bilibili.com/video/BV1VF4m1u7xi/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [国科大:计算机体系结构胡伟武、汪文祥](https://www.bilibili.com/video/BV1ZW4y1w7M6/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [CMU15213/15513-2023Spring:深入理解计算机系统(英)](https://www.bilibili.com/video/BV1aC4y1X7VF/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [UCBerkeley-CS61C:计算机体系结构(GPT 翻译)](https://www.bilibili.com/video/BV1964y1j7gk/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [Stanford-CS107:计算机组织与系统](https://www.bilibili.com/video/BV1ua4y1a72K/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [耶路撒冷希伯来大学:从零开始构建现代计算机(GPT 翻译)](https://www.bilibili.com/video/BV1Zp421y7Ex/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [威廉玛丽学院:计算机体系结构建模与仿真(英)](https://space.bilibili.com/91181150/channel/seriesdetail?sid=3700435&ctype=0)
## 操作系统 /计算机组成
- [操作系统实现](https://space.bilibili.com/491131440/channel/collectiondetail?sid=146887)
- [操作系统速成-2022 秋冬朋辈辅学录播](https://space.bilibili.com/18777618/channel/collectiondetail?sid=801384)
- [CSAPP-深入理解计算机系统-讲解](https://space.bilibili.com/354767108/channel/collectiondetail?sid=373847)
- [“一生一芯”](https://space.bilibili.com/2107852263/channel/collectiondetail?sid=690279)
- [MIT6.828/6.S081 操作系统课程教程](https://space.bilibili.com/28086502/channel/collectiondetail?sid=674585)
- [从零开始自制操作系统](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337)
- [2023 南京大学 “操作系统:设计与实现” (蒋炎岩)](https://space.bilibili.com/202224425/channel/collectiondetail?sid=1116786)
- [厦门大学-操作系统原理( 2022 春)](https://space.bilibili.com/40333442/channel/collectiondetail?sid=444904&ctype=0)
- [现代操作系统:原理与实现(上海交通大学)](https://www.bilibili.com/video/BV1B341117Ez?p=6)
- [操作系统原理:清华大学陈渝教授](https://www.bilibili.com/video/BV1wv4y1S7xm/)
- [深入理解计算机系统---个人讲解](https://space.bilibili.com/4564101/channel/series)
- [深入理解计算机系统-CSAPP 重点导读](https://www.bilibili.com/video/BV1RK4y1R7Kf/)
- [Dr.Dng 陪跑 CSAPP: bigONE 《深入理解计算机系统》](https://www.bilibili.com/video/BV1hf4y1P7qW/)
- [CS162 操作系统-精译(更新中)](https://space.bilibili.com/31359187/channel/seriesdetail?sid=2310084)
- [台湾清华大学 - 操作系统 Operating Systems - 黄能富教授](https://www.bilibili.com/video/BV1nb411K7DT/)
- [CS537:操作系统导论 Spring2018(英)](https://www.bilibili.com/video/BV1i2421K7P1?p=2&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [中山大学:操作系统原理-2024](https://www.bilibili.com/video/BV1iy421q74x/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [2020 年春季:南京大学计算机系统基础 PA 在线课-汪亮](https://www.bilibili.com/video/BV1a7411w7tC/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [教你写一个简单的 CPU](https://www.bilibili.com/video/BV1pK4y1C7es/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [台湾大学:信号与系统-李琳山](https://www.bilibili.com/video/BV1194y157ku/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [信号与系统漫谈](https://www.bilibili.com/video/BV1mW421A7Wi/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [嵌入式系统-南开大学李庆诚教授-2024 春](https://www.bilibili.com/video/BV1iA4m137ML/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 编译相关 /软件分析
- [南京大学《软件分析》课程 2020](https://space.bilibili.com/2919428/channel/collectiondetail?sid=342930&ctype=0)
- [手写一个 RISC-V 编译器!初学者友好的实战课程](https://space.bilibili.com/296494084/channel/collectiondetail?sid=571708)
- [南京大学软件学院编译原理课程](https://space.bilibili.com/479141149/channel/collectiondetail?sid=837891)
- [湖南大学:2024 计科拔尖班《编译原理》](https://www.bilibili.com/video/BV1FA4m1P7kn/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [KAISTCS420:编译器设计 2020Spring(机翻)](https://www.bilibili.com/video/BV1WC4y1k768/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 数据结构 /算法相关
- [东北大学2021 2022 春季学期算法设计与分析](https://space.bilibili.com/33807373/channel/collectiondetail?sid=442054&ctype=0)
- [南京大学《 2023 算法设计与分析》- 黄宇](https://space.bilibili.com/474662253/channel/collectiondetail?sid=1114093)
- [南京大学《 2023 算法设计与分析》- 徐经纬](https://space.bilibili.com/390606417/channel/collectiondetail?sid=1120423)
- [数据结构与算法基础(青岛大学-王卓)](https://www.bilibili.com/video/BV1nJ411V7bd/)
- [跟懒猫老师快乐学数据结构](https://space.bilibili.com/26340287/channel/collectiondetail?sid=5221)
- [香港科技大学:高级算法 & Advanced Algorithms](https://www.bilibili.com/video/BV12V4y1Z78b/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 计算机网络
- [计算机网络-通熟易懂讲解每个知识要点](https://space.bilibili.com/327247876/channel/collectiondetail?sid=60187)
- [中科大郑烇、杨坚全套-计算机网络(自顶向下方法)](https://www.bilibili.com/video/BV1JV411t7ow/)
- [计算机网络微课堂](https://www.bilibili.com/video/BV1c4411d7jb/)
## 程序语言 /编程语言
- [计算机程序的构造与解释( SICP, Python 版)](https://space.bilibili.com/283614758/channel/collectiondetail?sid=514109)
- [计算机语言 x86 汇编语言:从实模式到保护模式(操作系统引导课)](https://www.bilibili.com/video/BV1xE411N74T/)
- [程序语言理论与实现](https://space.bilibili.com/1453436642/video)
- [CS 公开课:计算机程序的构造和解释( SICP ](https://www.bilibili.com/video/BV1Xx41117tr/)
- [精译](https://www.bilibili.com/video/BV1v64y1Q78o?p=34)[-UC Berkeley 公开课-CS61A [计算机程序的构造和解释] (Spring 2021)](https://www.bilibili.com/video/BV1v64y1Q78o?p=34)
- [计算机程序的构造和解释 (SICP) Python 版 教程(录制持续更新中)](https://www.bilibili.com/video/BV1hb4y1A71J?p=4&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 软件工程
- [南京大学-2023 软件工程与计算 I](https://space.bilibili.com/507030405/channel/seriesdetail?sid=1878983&ctype=0)
- [2024 Rust 现代实用教程](https://www.bilibili.com/video/BV15y421h7j7/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 数据库
- [数据库系统( DBMS ](https://space.bilibili.com/87476569/channel/collectiondetail?sid=695667)
- [CMU15-445-精译(更新中)](https://space.bilibili.com/31359187/channel/seriesdetail?sid=2310086)
- [清华大学计算机系:数据库管理系统-李国良](https://www.bilibili.com/video/BV15u4y1Q71R/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [中文讲解版-CMU15-445:数据库内核](https://space.bilibili.com/23722270/channel/collectiondetail?sid=89600&spm_id_from=333.788.0.0)
## 并行程序设计
- [并行程序设计 谭光明](https://www.bilibili.com/video/BV1XM4y1S7wy?p=5)
- [高性能并行编程与优化](https://space.bilibili.com/263032155/channel/collectiondetail?sid=53025)
- [新竹清华大学:并行计算与并行编程课程](https://www.bilibili.com/video/BV1Yt411W7td/)
## 密码学
- [分布式密码学:Dora Dōjō x THUBA](https://space.bilibili.com/445312136/channel/collectiondetail?sid=988395&spm_id_from=333.788.0.0)
- [新火公开课-密码学基础系列课程](https://www.bilibili.com/video/BV1WL411d7Zi/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [Stanford:密码学(有翻译)](https://www.bilibili.com/video/BV1Ht411w7Re/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 工具
- [浙江大学:「实用技能拾遗」 2023 春夏朋辈辅学](https://space.bilibili.com/171431343/channel/collectiondetail?sid=1213483)
- [Obsidian 公开课](https://space.bilibili.com/443605967/channel/collectiondetail?sid=266172)
## 其他
- [自制双语字幕-计算机教育缺失的一课(2020)](https://www.bilibili.com/video/BV1xa4y1g7sZ/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [CMU15-440:分布式系统(英)](https://www.bilibili.com/video/BV1SF4m1u7SU?p=27&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [数字电路(对应的 MIT 数电)-UP 主讲解](https://www.bilibili.com/video/BV1Hz4y1c7EZ/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [北京大学肖臻老师《区块链技术与应用》公开课](https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [《智能计算系统-从深度学习到大模型》](https://space.bilibili.com/494117284/channel/series)
## 数学相关
- [北大丘维声教授清华高等代数课程 1080P 高清修复版](https://www.bilibili.com/video/BV1jR4y1M78W/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [中国科学技术大学-数学分析(B1)-程艺老师](https://www.bilibili.com/video/BV1Nr4y1U7qC/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [北京大学公开课:数学分析(上下全 112 讲无级数部分)](https://www.bilibili.com/video/BV1T5411P7wi/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [复变函数(复分析) [中英双字] 已完结](https://www.bilibili.com/video/BV1bi4y1K7vn/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [数学分析陈纪修无障碍重制版](https://www.bilibili.com/video/BV1sX4y1Y7jH/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [2020 齐震宇老师微積分 02 班](https://www.bilibili.com/video/BV1fK411K7MA/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [高等代数学-复旦大学-谢启鸿-高清](https://www.bilibili.com/video/BV1mJ411r7ZB/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [离散数学-东北大学](https://www.bilibili.com/video/BV1d7411v7zu/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [统计学-个人 UP 主](https://space.bilibili.com/610062295/channel/seriesdetail?sid=2558242&ctype=0)
## 哲学相关
- [中国人民大学:西方哲学史-张志伟](https://www.bilibili.com/video/BV1y64y1r7Mt/?spm_id_from=333.337.search-card.all.click&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [赵林、邓晓芒-西方哲学史(旧版)](https://www.bilibili.com/video/BV1hp4y1p7ye/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [台湾大学:逻辑学-傅皓政](https://www.bilibili.com/video/BV19u4y1s7ug/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [康德专题研究-邓晓芒](https://www.bilibili.com/video/BV1tt411h7TT/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [劳动关系学院:美学原理-2021 年春-杨宁](https://www.bilibili.com/video/BV1P54y1G7EW/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [符号学入门](https://www.bilibili.com/video/BV1aZ4y167bp/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
## 人文/艺术/建筑/电影/社会学
- [ MIT全球建筑史 4.605 A Global History of Architecture )(英文)](https://www.bilibili.com/video/BV1D7411D7h4/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [现代社会理论基础-中英字幕](https://www.bilibili.com/video/BV1FL4y1e7nt/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [中英双字-艺术史速成课](https://www.bilibili.com/video/BV1Ti42117sw/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [贡布里希《艺术的故事》视频解说版](https://space.bilibili.com/477533700/channel/collectiondetail?sid=1737877&spm_id_from=333.788.0.0)
- [摄影指导公开课-VFS/北电毕业生](https://space.bilibili.com/386246830/channel/collectiondetail?sid=1837138&spm_id_from=333.788.0.0)
- [导演公开课-北电/VFS 毕业生](https://space.bilibili.com/386246830/channel/collectiondetail?sid=1871554)
- [劳动关系学院:文学理论-2021 年秋-杨宁](https://www.bilibili.com/video/BV1EG4y187wq/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [劳动关系学院:西方文论-2021 年秋-杨宁](https://www.bilibili.com/video/BV1sR4y1W77y/?spm_id_from=333.999.0.0&vd_source=cc4bfbaa0f8c6c363ff9afecce036d91)
- [周传基讲电影](https://www.bilibili.com/video/BV1as411M7DG/?spm_id_from=333.999.0.0)
## 综合
- [精读 c++primer](https://space.bilibili.com/479038960/channel/collectiondetail?sid=997541)
- [计算机图形学游戏方向-2023 年春季第 2 次迭代-谭剑](https://space.bilibili.com/1268065381/channel/collectiondetail?sid=1163347)
- [Linux 文件系统九讲-陈硕](https://space.bilibili.com/1356949475/channel/collectiondetail?sid=1211802)
- [DDIA 读书逐章分享](https://space.bilibili.com/30933812/channel/collectiondetail?sid=240551)
- [机器学习-白板推导系列](https://www.bilibili.com/video/BV1aE411o7qd/)
- [陈明-南京大学 23 春-面向对象编程基础](https://space.bilibili.com/395471891/channel/collectiondetail?sid=1213523)
- [每个程序员都应该知道的内存知识 (带你走读 Ulrich Drepper 的经典论文)](https://www.bilibili.com/video/BV1Xy4y1b7SK/)
## 后记
待续...

278
content/about-git.md Normal file
View File

@ -0,0 +1,278 @@
+++
title = "乱七八糟:Git使用简明手册"
date = 2023-12-15
[taxonomies]
tags = ["乱七八糟"]
+++
前言 Git作为现代软件开发中不可或缺的版本控制工具常常让初学者感到困惑。本文旨在介绍 Git 的全流程安装和基本使用,希望能够帮助新手更轻松地理解和掌握 Git 的基本概念和操作。
<!-- more -->
## 安装git
Windows[https://git-scm.com/download/](https://git-scm.com/download/)
Archlinux`sudo pacman -S git`
安装完成后检查版本:`git --version`
## 创建新仓库
如果你的目录不是一个 Git 仓库,你需要先初始化。
创建新文件夹,在你的项目目录中运行以下命令:
`git init`
设置默认仓库为 main,避免因为 main/master 名称不同的牛马问题:
`git init --initial-branch=main`
## 克隆仓库
执行如下命令以创建一个本地仓库的克隆版本:
`git clone /path/to/repository`
如果是远端服务器上的仓库,你的命令会是这个样子:
`git clone username@host:/path/to/repository`
## 连接远程仓库
生成密钥:
`ssh-keygen -t rsa -b 4096 -C "your_email@example.com"`
可以生成多个不同名字的密钥:
`ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/github_key1`
`ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/github_key2`
使用 `ssh-add` 命令将生成的密钥添加到 SSH 代理中。
`ssh-add ~/.ssh/github_key1`
`ssh-add ~/.ssh/github_key2`
`~/.ssh/config` 文件中配置不同的主机别名以及相应的密钥文件。编辑该文件并添加以下内容:
`# GitHub repository 1`
`Host github1`
HostName github.com
User git
IdentityFile ~/.ssh/github_key1
`# GitHub repository 2`
`Host github2`
HostName github.com
User git
IdentityFile ~/.ssh/github_key2
随后将cat ~/.ssh/id_rsa.pub,将其添加至 Github的Deploy密钥中勾选write权限
连接到github
`ssh -T git@github.com`
添加远程仓库:
`git remote add origin <remote_repository_url>`
比如我已经在 GitHub 上创建了一个名为 `dichos` 的仓库,你可以使用以下命令将其添加为远程仓库:
`git remote add origin git@github.com:Dichgrem/dichos.git`
设置远程仓库
`git remote set-url origin git@github.com:Dichgrem/dichos.git`
## 工作流
本地仓库由 git 维护的三棵“树”组成。第一个是你的 `工作目录`,它持有实际文件;第二个是 `暂存区Index`,它像个缓存区域,临时保存你的改动;最后是 `HEAD`,它指向你最后一次提交的结果。
## 创建一个分支
`git branch main`
这将创建一个名为 main 的分支。
## 删除分支
`git branch -d master`
使用大写强制删除
`git branch -D master`
## 添加和提交
你可以提出更改(把它们添加到暂存区),使用如下命令:
`git add <filename>`
`git add *`
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
`git commit -m "代码提交信息"`如:
`git commit -m "Initial commit"`
现在,你的改动已经提交到了 **HEAD**,但是还没到你的远端仓库。
## 推送改动
你的改动现在已经在本地仓库的 **HEAD** 中了。执行如下命令以将这些改动提交到远端仓库:
`git push origin master`
可以把 *master* 换成你想要推送的任何分支。
如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
`git remote add origin <server>`
如此你就能够将你的改动推送到所添加的服务器上去了。
## 合并分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,*master* 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
创建一个叫做“feature_x”的分支并切换过去
`git checkout -b feature_x`
切换回主分支:
`git checkout master`
再把新建的分支删掉:
`git branch -d feature_x`
除非你将分支推送到远端仓库,不然该分支就是 *不为他人所见的*
`git push origin <branch>`
## 更新与合并
要更新你的本地仓库至最新改动,执行:
`git pull`
以在你的工作目录中 ***获取**fetch* 并 ***合并**merge* 远端的改动。
要合并其他分支到你的当前分支(例如 master执行
`git merge <branch>`
在这两种情况下git 都会尝试去自动合并改动。遗憾的是这可能并非每次都成功并可能出现_冲突conflicts*。 这时候就需要你修改这些文件来手动合并这些_冲突conflicts*。改完之后,你需要执行如下命令以将它们标记为合并成功:
`git add <filename>`
在合并改动之前,你可以使用如下命令预览差异:
`git diff <source_branch> <target_branch>`
## 标签
为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 *1.0.0* 的标签:
`git tag 1.0.0 1b2e1d63ff`
*1b2e1d63ff* 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID
`git log`
你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。
## 日志
如果你想了解本地仓库的历史记录,最简单的命令就是使用:
`git log`
你可以添加一些参数来修改他的输出,从而得到自己想要的结果。 只看某一个人的提交记录:
`git log --author=bob`
一个压缩后的每一条提交记录只占一行的输出:
`git log --pretty=oneline`
或者你想通过 ASCII 艺术的树形结构来展示所有的分支, 每个分支都标示了他的名字和标签:
`git log --graph --oneline --decorate --all`
看看哪些文件改变了:
`git log --name-status`
这些只是你可以使用的参数中很小的一部分。更多的信息,参考:
`git log --help`
## 替换本地改动
假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
`git checkout -- <filename>`
此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
`git fetch origin`
`git reset --hard origin/master`
## 修改默认分支
git目前默认的主分支为 master和 github 默认分支 main 不同,这使得默认配置下 git 往往连接失败。可以通过下两种方法改变默认分支。在本地 git init 时将默认分支修改成main
```
1. git --version //查看版本
2. git config --global init.defaultBranch main //将默认分支修改成main
3. git init //本地项目文件夹内创建.git文件夹
4. git add . //添加到暂存区
5. git commit -a [描述的内容] //记录修改行为
6. git pull --rebase origin main //拉github上的readme.md
7. git push origin main //上传代码
```
也可以不修改git上的默认分支而是修改github上库的默认分支。
## Windows下git使用代理
由于网络环境的差异Git连接github需要代理或者全局模式。Git支持四种协议而除本地传输外还有git://, ssh://, 基于HTTP协议这些协议又被分为哑协议HTTP协议和智能传输协议。对于这些协议要使用代理的设置也有些差异
- 使用 `git协议` 时,设置代理需要配置 `core.gitproxy`
- 使用 `HTTP协议` 时,设置代理需要配置 `http.proxy`
- 而使用 `ssh协议`代理需要配置ssh的 `ProxyCommand` 参数
由于个人需求仅仅是 HTTP 的代理相对来说HTTP 有比较好的通适性Windows 配置git/ssh比较棘手设置的时候只需要针对单个设置 `http.proxy` 即可,在需要使用代理的项目下面使用 `git bash` 如下命令进行设置你的Uri和port可能和我的不同
`git config http.proxy` [http://127.0.0.1:2080](http://127.0.0.1:8088) `# 也可以是uri:port形式`
这个是不需要鉴权的代理设置,如果需要鉴权,可能需要添加用户名密码信息:
`git config http.proxy` [http://username:password@127.0.0.1:2080](http://username:password@127.0.0.1:8088)
如果git的所有项目都需要启用代理那么可以直接启用全局设置
`git config --global http.proxy` [http://127.0.0.1:2080](http://127.0.0.1:8088)
为了确认是否已经设置成功,可以使用 `--get` 来获取:
`git config --get --global http.proxy`
这样可以看到你设置在global的 `http.proxy` 值。 
需要修改的时候再次按照上面的方法设置即可git 默认会覆盖原有的配置值。
当我们的网络出现变更时,可能需要删除掉原有的代理配置,此时需要使用 `--unset` 来进行配置:
`git config --global --unset http.proxy`
在命令之后,指定位置的设置值将会被清空,你可以再次使用 `--get` 来查看具体的设置情况。
如果使用了 HTTPS肯呢个会碰到 HTTPS 证书错误的情况,比如提示: `SSL certificate problem` ,此时,可以尝试将 `sslVerify` 设置为 `false`
`git config --global http.sslVerify false`
恩,到此,可以试试 git 来获取/更改项目了,此时,项目应该是使用代理来进行通讯的。
## 注意
- 不要多次使用不同的参数来设置代理,一般使用文中两种方式酌情选用即可, `--global` `--system` `--local` 各级设置后可能会给自己带来不必要的麻烦。git默认是先到 git Repository 的配置文件中查找配置文件,如果没有才会到 `--global` 设置的文件中查找,因此,单个项目文件中的设置会覆盖 `--global` 的设置。
- 使用 `--global` 来配置的信息保存在当前用户的根目录下的 `.config` 文件中,而仓库中的配置保存在项目仓库的根目录下的 `.git/config` 文件中。
- 如果是 Linux 的用户,建议全局代理。
> 20240501更新完系统出现以下报错:
```
sign_and_send_pubkey: signing failed for RSA "/home/dich/.ssh/id_rsa" from agent: agent refused operation
git@github.com: Permission denied (publickey).
致命错误:无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
```
解决方法是使用 ssh-add 命令重新添加你的密钥。
```
ssh-add ~/.ssh/id_rsa
```

View File

@ -0,0 +1,207 @@
+++
title = "乱七八糟:机械革命键盘失灵拯救记"
date = 2023-09-04
[taxonomies]
tags = ["乱七八糟"]
+++
前言 机械革命作为一款极高性价比的笔记本,其优惠的力度和问题不断的故障让玩家们爱恨交织;作者在其上安装 Linux 时遇到了键盘失灵的问题,为了避免更多人踩坑,故写本文。
<!-- more -->
## 一.故障情况
作者在一台锐龙平台的笔记本上安装 Debian 时,先在虚拟机中尝试安装,没有发现异常;随后在实体机安装时发现 liveCD 中键盘不可用无法设置密码和主机名在连接外接键盘后安装完成却发现Fn快捷键仍然可用。
## 二.具体思路
根据机革一贯的“特性”,作者猜测是因为 BIOS 或者 ACPI 出现了故障,随后在翻阅论坛时发现是由于锐龙笔记本键盘中断描述与其他键盘不同:其为边缘敏 感、低电平有效的而蛟龙16K机器键盘实际是边缘敏感、高电平有效Edge ActiveHigh。结合 linux 的特性,读取到边缘敏感、低电平有效的中断时,会认为 BIOS 有Bug会直接当成边缘敏感、高电平有效进行处理。因此键盘就没有了响应。
## 三.解决方法
既然是高低电平表述的错误那么我们只需建立DSDT 表副本,将其修改,然后让它优先启动,从而让键盘配置正常;另外还存在 BIOS 修复,内核编译的方法,比较复杂,这里不做说明。
```
首先建立一个DSDT文件夹
sudo su
mkdir -p /home/dsdt
随后将系统的DSDT表读取到里面并安装acpica-tools
cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
apt install acpica-tools
iasl -d dsdt.dat
进入vim编辑DSDT表没有vim的先安装一个
apt install vim
vim dsdt.dsl
搜索并替换 Device(PS2K) 下面的
IRQ (Edge, ActiveLow, Shared, )
IRQ (Edge, ActiveHigh, Shared, )
vim搜索的方法为在命令模式下按下“/”键入搜索字符并回车即可按“n”跳转到下一处“N”跳转到前一处按: wq保存
随后搜索DefinitionBlock将其步进值增加一十六进制即更改
DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I", 0x01072009)
DefinitionBlock ("", "DSDT", 2, "ALASKA", "A M I", 0x0107200A)
关闭DSDT并设置其优先启动
iasl dsdt.dsl
mkdir -p kernel/firmware/acpi
cp dsdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > acpi_override
cp acpi_override /boot/acpi_override
echo "GRUB_EARLY_INITRD_LINUX_CUSTOM=\"acpi_override\"" >>/etc/default/grub
更新并重启:
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo grub-install /dev/sdX
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
update-grub2
reboot
```
不出意外,重启后键盘即可使用,若系统不同将 apt 替换即可。
## 四.其他问题
对于Redmi 或 Lenovo刚发布的AMD R7 6800H机型
- WIFI没有驱动 - (螃蟹卡 8852be
- 蓝牙没有驱动 - (螃蟹卡 8852be)。
- 开启窗口特效后kwin_x11进程CPU占用飙升。
- 电源管理,无论怎么调,笔记本都发热很严重。
### 修复wifi驱动
```
# 内核小于5.18的
git clone https://github.com/HRex39/rtl8852be.git
# 内核大于等于5.18的
git clone https://github.com/HRex39/rtl8852be.git -b dev
cd rtl8852be
make -j8
sudo make install
sudo modprobe 8852be
```
### 修复蓝牙驱动
```
# 内核=5.15
git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.15
# 内核=5.18
git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.18
cd rtl8852be_bt
make -j8
sudo make install
```
### 修复kwin_x11显卡未驱动
首先去amd官网下载最新的linux-amd驱动
````
https://www.amd.com/zh-hans/support/linux-drivers // 22.20 for Ubuntu 20.04.5 HWE
````
修改Deepin为ubuntu
````
sudo vim /etc/os-release // ID=Deepin => ID=ubuntu
sudo apt install ./amdgpu-install_22.20.50200-1_all.deb
sudo vim /etc/apt/sources.list.d/amdgpu.list // focal => bionic
sudo apt update
sudo amdgpu-install --no-dkms
sudo apt install inxi clinfo
````
安装成功以后用inxi查看下
`inxi -G`
````
Graphics: Device-1: AMD Rembrandt driver: amdgpu v: kernel
Display: x11 server: X.Org 1.20.11 driver: amdgpu,ati unloaded: fbdev,modesetting,vesa
resolution: 1920x1080~60Hz
OpenGL: renderer: AMD YELLOW_CARP (LLVM 14.0.1 DRM 3.42 5.15.34-amd64-desktop)
v: 4.6 Mesa 22.1.0-devel
````
最后还原最初的修改:
````
sudo vim /etc/os-release // ID=ubuntu => ID=Deepin
sudo apt purge amdgpu-install
````
看下效果图:
````
➜ ~ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD YELLOW_CARP (LLVM 14.0.1, DRM 3.42, 5.15.34-amd64-desktop) (0x1681)
Version: 22.1.0
Accelerated: yes
Video memory: 2048MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 1388 MB, largest block: 1388 MB
VBO free aux. memory - total: 3047 MB, largest block: 3047 MB
Texture free memory - total: 1388 MB, largest block: 1388 MB
Texture free aux. memory - total: 3047 MB, largest block: 3047 MB
Renderbuffer free memory - total: 1388 MB, largest block: 1388 MB
Renderbuffer free aux. memory - total: 3047 MB, largest block: 3047 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 2048 MB
Total available memory: 5120 MB
Currently available dedicated video memory: 1388 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD YELLOW_CARP (LLVM 14.0.1, DRM 3.42, 5.15.34-amd64-desktop)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.1.0-devel
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 22.1.0-devel
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.1.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
````
### 手动管理电源避免CPU过度使用而发热
安装下面的三方电源管理工具 `Boost Changer`,选择 `Performance`策略即可
````
wget https://github.com/nbebaw/boostchanger/releases/download/v4.4.0/boostchanger_4.4.0_amd64.deb
````
## 参考
[https://zhuanlan.zhihu.com/p/530643928](https://zhuanlan.zhihu.com/p/530643928)
[https://github.com/HRex39/rtl8852be](https://github.com/HRex39/rtl8852be)
[https://github.com/HRex39/rtl8852be_bt](https://github.com/HRex39/rtl8852be_bt)
[https://bbs.deepin.org/post/241607](https://bbs.deepin.org/post/241607)

View File

@ -0,0 +1,47 @@
+++
title = "搭建个人信息流:播客收听指北"
date = 2024-03-06
[taxonomies]
tags = ["乱七八糟"]
+++
前言 讲起播客,许多人第一反应是喜马拉雅,但其实播客的订阅和收听有许多种方式。本文带你了解订阅播客的各种方式,并告诉你市面上有哪些不错的播客客户端可供选择。
<!-- more -->
## 一.什么是播客
播客是一种通过互联网传播音频或视频文件的媒体形式。这个词汇是由“广播”broadcasting和“iPod”一种流行的便携式媒体播放器两个词组合而成的。播客通常是由个人、组织或公司制作并通过互联网上的订阅服务分享给观众。
- 定期更新: 播客通常以系列形式发布,每一集都是一个独立的音频或视频文件。制作者会定期发布新的内容,让观众订阅后能够定期收听或观看。
- 订阅:观众可以通过订阅播客来自动获取最新的内容。这意味着一旦订阅了某个播客,新的内容就会自动下载到用户的设备上,方便随时收听或观看。
- 多样的内容: 播客内容非常多样化,涵盖了几乎所有可能的主题,包括新闻、科技、文化、教育、娱乐等。从个人讲述生活故事到专业领域的讨论,播客的形式和内容都非常灵活。
- 低门槛制作:制作播客相对来说不需要太多的专业设备和技能,因此许多个人或小团队可以轻松开始制作自己的播客。
播客的流行得益于它提供了一种轻松、灵活、个性化的信息传递方式,让人们可以方便地在各种主题上深入了解或娱乐。
## 二.如何听播客
要收听播客,首先得确定自己所用的平台和客户端,一般有以下几种:
- 使用播客应用: 最常见的方式是使用专门的播客应用程序,这些应用可以在智能手机、平板电脑或计算机上安装。一些常见的播客应用包括 Apple Podcasts苹果播客、Spotify、Google Podcasts谷歌播客、Pocket Casts等。这些应用通常允许你搜索、订阅和播放播客。像喜马拉雅以及各大云音乐等非泛用型播客客户端这类软件的特点是收听方便种类繁多但一般不开源也没有 RSS 链接。
- 在网页上收听: 许多播客也提供在其官方网站上在线收听的选项。你可以在制作者的网站上找到相应的播客链接,然后直接在浏览器中收听,或者使用浏览器插件。
- 通过流媒体服务: 一些流媒体服务,如 Spotify、Apple Music 等,也提供了播客的功能。你可以在这些服务中搜索并订阅你感兴趣的播客。
- 通过RSS订阅 几乎每个独立播客的主播都会反复强调「请使用节目 RSS 链接在 泛用型播客客户端 里订阅节目」,一定程度上有无 RSS 订阅链接是作为独立播客的判断标准。使用 RSS 链接订阅播客其实非常简单——得到节目的 RSS 订阅链接后将之粘贴到你的播客客户端内通常是节目的搜索栏或地址栏即可。大多数播客应用都支持这种方式。注意例如喜马拉雅、荔枝等平台是没有原生RSS链接的因此对第三方服务生成的 RSS 链接要注意鉴别。有些服务提供者会在不告知主播和听众的前提下,私自在节目中间插入广告,非常影响节目收听体验,在使用时请注意甄别。
## 三.常见客户端优缺点
`我个人推荐使用开源的 AntennaPod 。`
## 四.播客资源
[天仙子的播客年度总结:播客选录](https://tianxianzi.me/2023/12/11/selected_podcast/)
[中文播客榜](https://xyzrank.com/#/)
[Podcast search](https://www.listennotes.com/)

71
content/about-runer-1.md Normal file
View File

@ -0,0 +1,71 @@
+++
title = "乱七八糟:跑步笔记(一)"
date = 2024-06-08
[taxonomies]
tags = ["乱七八糟"]
+++
前言 最近读得<<亮哥跑经>>一书,遂迷上跑步;奈何体重偏高,略微有些吃力.以下是一些笔记:
<!-- more -->
> 为啥有人跑两步就喘?
- 运动基础薄弱
再慢的跑步,它也比快走的强度要大。跑步虽然很简单,但它并不是低强度的运动。
- 呼吸方法错误
跑步时需要更多的氧气,如果呼和吸的量不均等,吐气比吸的要多,身体没有充分地进行气体交换,就会气喘吁吁。
- 呼吸肌能力较弱
大基数体重的人,腹部往往很胖,身体的呼吸系统较弱。内脏脂肪多,呼吸肌就像吹大的气球一样,被撑薄了,相应的,它收缩和扩张的能力就会下降,所以大体重的人跑步更容易喘。而且除了容易喘之外,他们跑步也更容易岔气。
> 正确的呼吸方法是什么?
- 建议初学者采用两步一吸两步一呼的方式。
- 等跑了一段时间,心肺功能和整体体能加强之后,可以改为三步一吸三步一呼。
- 需要注意的是,最好口鼻同时呼吸,才能使充足氧气吸入
> 冬天跑步注意事项
- 冬天户外跑时,因为天气比较冷,为了防止冷空气进入我们的身体,可以带一个薄薄的口罩。
- 不要秋天的时候都没跑,到冬天最冷的时候突然出去跑步了。也不要顶风跑,这样你的呼吸系统是受不了的。
- 冬天跑步的时候,可以用舌尖顶住上牙膛,过滤加温一下冷空气,免得空气直灌入身体,造成肠胃不适。
> 为什么会岔气?
- 岔气,简单来说,就是呼吸肌痉挛(抽筋)了。
- 当呼吸肌的能力不足以支撑你的身体这样强度运动时,就会通过痉挛的方式告诉你,你需要停下来或者减慢速度。
- 平时可以配合做一些腰腹部的核心训练,比如说卷腹、平板支撑等,多练习腹部呼吸法,这样在加强核心力量的同时,也加强了呼吸肌的能力。
- 跑步之前,要做好充分的热身,不要上来就加速跑,逐渐平缓地提升呼吸节奏,你得让呼吸肌有适应的过程。
- 如果跑步时出现了岔气情况,可以放慢跑步速度;严重的话,可以停下来调整呼吸,并且身体向相反方向伸展,右侧岔气的话,那就向上伸直右侧手臂,并向左侧伸展 1530 秒.
> 跑步前期很难坚持,怎么办?
- 刚开始跑,心肺体能都还跟不上,那可能跑起来不太有成就感,没有正反馈,也不好坚持。因此,需要制定合理的跑步计划(时间/距离)
- 从跑够 10 分钟开始的。之后每周的运动强度可以比前一周提高 5%。
- 无论是跑步还是健身,训练时长最好控制在 1 个小时之内,因为 1 个小时的运动会让我们身心都得到满足.
- 在前期跑步的时候,不要跑上坡路,上坡路非常累.
- 另外可以通过听音乐、给跑步赋予意义和仪式感、装备奖励等方式,帮助自己度过刚开始跑时的枯燥期。

62
content/about-runer-2.md Normal file
View File

@ -0,0 +1,62 @@
+++
title = "乱七八糟:跑步笔记(二)"
date = 2024-06-11
[taxonomies]
tags = ["乱七八糟"]
+++
前言 最近读得<<亮哥跑经>>一书,遂迷上跑步;奈何体重偏高,略微有些吃力.以下是一些笔记:
<!-- more -->
## 关于跑姿:
> 摆臂
- 摆臂的主要目的,是对抗腿的阻力,来保持我们的身体平衡,让身体向正前方笔直前行。
- 摆臂和步频是紧密相关的。所以你看那些短跑运动员,他们上肢力量也很发达,因为他们短跑时速度很快,步频很大,如果没有相应的摆臂,他们身体会不平衡.
- 正确的摆臂应该是什么样的呢?既然我们是向前跑,那么摆臂也应该是垂直向前的,而不是在胸口前左右交叉的,因为你左右摆臂的时候,等于给身体一个左右旋转的力,实际上这消耗了多余的能量,对于腰腹肌肉及腰椎压力也比较大,跑的也不快也不长久。
- 正确的摆臂应该是肩膀放松状态下,以肩关节为轴的,大臂和小臂成 90 度角,大臂带动小臂前后垂直摆动。 抬起时,大拇指不要超过眉毛,回来时,大拇指不要越过躯干。
> 常见的错误摆臂方式
- 双臂在身前交叉,我称之为“戳鼻孔跑”。当你的双臂不是垂直向前用力,而是左右旋转的时候,身体会消耗多余能量。
- 只摆小臂,不摆大臂。跑步时把大臂夹得特别紧,而且摆臂是以肘关节为轴了,这是不对的。
- 不摆手臂,摆动躯干。完全只是靠摆动躯干的方式在维持平衡,这样会造成能量过度损失,而且对腰椎压力也比较大。
- 摆臂高度不对,比如说摆臂过大,或是一面高一面低。摆臂过大是短跑的摆臂方式,长跑的摆臂,向前手指不超过眉梢、向后不超过躯干。
- 摆臂一面高一面低,一般我们戴臂包、手中握手机或水瓶等容易出现这个问题。摆臂是帮我们平衡的,如果你的左右摆臂高度不一样,那跑姿一定是变形的,也就是说身体左右受力是不均匀的,这时很容易导致身体的一侧肌肉紧张,出现像跑步膝等身体损伤.
> 摆腿
- 看一个人摆腿对不对,就看他是用髋关节跑还是膝关节跑。
- 正确的长跑姿势,应该是核心收紧,臀大肌和大腿后侧肌肉发力,以髋关节为轴,带动膝关节和踝关节向前跑动,小腿只是辅助性肌肉,它发力不多。所以长跑运动员基本上臀部都是很翘的,而小腿纤细。
- 如果一直屈髋“坐着跑”,跑步时就会经常出现重心不稳的情况,而且地面给你带来的冲击力,你不能很好地将它传导到臀部,也就是说,这些冲击力都消耗在了膝关节这里。这样的话,一是你很难跑得长久,二是容易把小腿跑粗,三是全身的压力都集中在膝关节,容易带来一些慢性损伤。
> 着地
- 跑步的着地方式主要有三种:前脚掌、中脚掌和后脚掌。如果我们是长跑的话,主要采用的是后脚跟着地和中足着地的方式。
- 前脚掌着地会帮助我们跑步提速,但是大众跑者跑长跑,不是比谁跑的快,而是看谁跑得更健康、更安全、更节能。
> 前倾跑 & 低头族
- 跑步时腰疼或者下背部疼痛,其实这主要和你跑步时身体前倾了有关。因为当你身体前倾时,你的屈髋肌群,也就是胯骨部位会过度紧张,你的下背部肌肉会被反向拉长,它的压力就会增加。这就好比你背个书包去跑步,背部肌肉很容易疲劳的。
- 而且当你身体前倾的时候,你的髋关节不能很好的帮你做功,身体容易左右扭动,时间长了也容易引起腰部肌肉酸疼。
- 还有的人是低头跑,如果有这个情况,可以在跑步之前做一些颈部伸展;跑步时,不要探头,稍微收下巴,眼睛可以平视前方 50 米左右地方,这样就可以很好地解决这个问题了。

433
content/about-server-set.md Normal file
View File

@ -0,0 +1,433 @@
+++
title = "乱七八糟:服务器初始化与安全设置"
date = 2024-06-12
[taxonomies]
tags = ["乱七八糟"]
+++
前言 本文记录服务器常用操作步骤。
<!-- more -->
## Doamin
建站不一定需要服务器、域名和备案。尤其不要买腾讯云不要买CN域名备案过程要填很多个人信息且一周没有解析网站备案就会自动注销。
- **cn 域名没有隐私保护whois protection**。国内域名注册商说的隐私保护根本是自欺欺人,在它们隐私保护就是在自己的查询服务隐藏注册人信息。但在别的地方是能查到的,在[中国互联网络信息中心](https://whois.cnnic.cn/)可以查到每个 cn 域名注册人的姓名和邮箱。
- **注册 cn 域名必须使用真实身份信息**。要是你想用假信息注册来保护隐私,那就太天真了。审核的时候不会通过的。真的不想用自己的信息注册的话,要么以公司名义注册,但公司的法定代表人还是能查到的。要么叫别人注册域名之后给你用,可谁愿意冒这种风险呢。
- **cn 域名无法删除**。如果你觉得 cn 域名暴露了你的隐私,那对不起,这是不能注销的[3](https://cyrusyip.org/zh-cn/post/2021/05/25/damn-cn-domain/#fn:3)。你只能修改邮箱地址,然后等到它过期。或者转让给别人,不过感觉把别人推到火坑里不太好啊。
- **cn 域名有被停用的风险**。2008 年,有人以跳水奥运冠军吴敏霞拼音注册了 wuminxia.cn[结果被中国互联网络信息中心CNNIC回收了域名](https://www.cnbeta.com/articles/tech/62209.htm),并转交给国家体育总局。此域名在 2021 年 2 月 28 日被优视科技[注册](https://whois.cnnic.cn/WhoisServlet?queryType=Domain&domain=wuminxia.cn)呵呵。2009 年,牛博网被域名注册商万网停止解析。
## VPS
````
apt install curl vim sudo
apt update && apt upgrade -y
apt-get install --fix-missing
````
## BBR
查询系统所支持的拥塞控制算法。
````
$ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_congestion_control = bbr cubic reno
````
查询正在使用中的拥塞控制算法Linux 绝大部分系统默认为 Cubic 算法)。
````
$ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = cubic
````
指定拥塞控制算法为 bbr。
````
$ echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf && sysctl -p
````
## Safe
### 更换SSH端口
使用root账户或已经有sudo权限的用户登录到系统。
打开SSH配置文件`sshd_config`可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例
````
sudo vim /etc/ssh/sshd_config
````
在配置文件中找到以下行:
````
Port 22
````
这是SSH默认的端口号你可以将其更改为你想要的任何未被占用的端口号。例如将端口更改为2222
````
Port 2222
````
保存并关闭文本编辑器。重新启动SSH服务以应用更改
````
sudo service ssh restart
````
或者如果你的系统使用systemd可以使用以下命令
````
sudo systemctl restart ssh
````
### 安装 UFW
````
sudo apt install ufw
````
**如果你在远程位置连接你的服务器,在启用 UFW 防火墙之前,你必须显式允许进来的 SSH 连接。否则,你将永远都无法连接到机器上。**
````
sudo ufw allow 22/tcp
````
> 如果 SSH 运行在非标准端口,你需要将上述命令中的 22 端口替换为对应的 SSH 端口。
**放开 1Panel 系统端口。**
````
sudo ufw allow 8090/tcp
````
> 上述命令中的 8090 端口需要替换为安装 1Panel 系统时自定义的端口。
**启动 UFW**
````
sudo ufw enable
````
### 安装 Fail2ban
````
sudo apt-get install fail2ban
````
**2、Debian 12 及以上的版本需要手动安装 rsyslog**
````
sudo apt-get install rsyslog
````
**3、启动 Fail2ban 服务**
````
sudo systemctl start fail2ban
````
**4、开机自启动**
````
sudo systemctl enable fail2ban
````
**5、查看 Fail2ban 服务状态。**
````
sudo systemctl status fail2ban
````
### Ban IPv6
手动 禁用 VPS 的 IPv6 命令:
```
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
```
如果想重启系统也生效, 执行:
```
echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf
```
手动 启用 VPS 的 IPv6 命令:
```
sysctl -w net.ipv6.conf.all.disable_ipv6=0
sysctl -w net.ipv6.conf.default.disable_ipv6=0
```
重新载入 sysctl 配置
```
sysctl --system # reload sysctl
```
如果重载, 还无效果, 可能要 reboot 重启下.
查看 VPS 的 IPv6 信息
```
ip -6 addr show scope global
或者 curl ipv6.ip.sb
```
### 改为密钥登录
- 在本地执行以下命令生成.pub后缀的公钥和无后缀的密钥
```
ssh-keygen
```
注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密;
- 随后将.pub后缀的公钥中的内容写入服务器的``~/.ssh/authorized_keys``中;
- 使用以下命令编译服务器的SSH配置
```
vim /etc/ssh/sshd_config
```
将其中的该行改为``PasswordAuthentication no``,保存退出;随后使用
```
sudo systemctl restart sshd
```
重启SSH即可禁用密码登录
- 将**PermitRootLogin prohibit-password**改为**prohibit-password**即可实现仅root用户密钥登录
- 使用以下命令查看输出,
```
sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentication'
```
如有**PasswordAuthentication no → 禁用密码登录**以及**PubkeyAuthentication yes → 允许密钥登录**则成功。
- 注意**authorized_keys**的权限为600如果不是则需要改正``chmod 600 ~/.ssh/authorized_keys``
- 随后可以在本地尝试登录,命令为``ssh -i ~/.ssh/id_xxx -p 端口 用户名@服务器IP``第一次登录会提示服务器公钥的哈希值需要选Yes。
## Docker
1. 安装基础工具
````
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
````
2. 安装docker的gpg key
````
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
````
3. 安装docker源
````
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
````
上面命令中的`lsb_release -cs`返回`bullseye`也就是debian11的代号。
4. 安装docker
````
apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
sudo systemctl start docker
````
至此安装完成。
在debian系的Linux发行版上docker会开机启动启动。
如果平时使用非root账户又不想每次执行docker命令之前都加上sudo参考docker的[文档](https://link.zhihu.com/?target=https%253A//docs.docker.com/engine/install/linux-postinstall/%2523manage-docker-as-a-non-root-user),可以添加`docker`组并将非root账户加入到该组中。下面的命令创建`docker`组并将当前用户加入`docker`组,执行完成之后重新登陆生效:
````
sudo groupadd docker
sudo usermod -aG docker $USER
````
### 使用 Docker 存储库安装
我建议使用此方法的主要原因是您可以轻松升级,因为存储库可以轻松更新!
首先,使用以下命令安装此方法的先决条件:
````
sudo apt update && sudo apt install ca-certificates curl gnupg
````
现在,让我们使用以下命令创建一个目录来存储密钥环:
````
sudo install -m 0755 -d /etc/apt/keyrings
````
接下来,使用给定的命令下载 GPG 密钥并将其存储在 `/etc/apt/keyrings/etc/apt/keyrings` 目录中:
````
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
````
完成后,使用 chmod 命令更改 docker.gpg 文件的权限:
````
sudo chmod a+r /etc/apt/keyrings/docker.gpg
````
最后,使用以下命令为 Docker 设置存储库:
````
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
````
上述命令中每行末尾的额外 `\` 只是添加新行的一种方式,以便您可以轻松查看整个命令。就是这样!
现在,您可以使用以下命令更新存储库索引并安装 Docker
````
sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
````
要验证 Docker 安装,您可以安装 hello-world 映像:
````
sudo docker run hello-world
````
hello-world docker 镜像很小,仅用于检查 Docker 是否运行正常。
### 使用 Docker 而不使用 sudo
如果您注意到,在运行 hello-world 映像时,我使用了 sudo。
这可能不太方便。那么如何将其配置为不必使用 sudo 呢?
为此,首先使用 groupadd 命令创建一个 docker 组:
````
sudo groupadd docker
````
现在将用户添加到组docker
````
sudo usermod -aG docker $USER
````
现在从终端注销并重新登录以使更改生效。
> 如果您在虚拟机中安装 Docker需要重新启动才能使您所做的更改生效。
让我们通过运行 hello-world 图像来测试它:
````
docker run hello-world
````
正如您所看到的,我无需使用 sudo 即可获得相同的结果。
### 卸载 Docker
首先,使用以下命令停止 docker 服务:
````
sudo systemctl stop docker
````
然后按以下方式使用 apt purge 命令从系统中删除 Docker
````
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
````
如果您打算进行全新安装或者不想拥有任何以前的数据,那么您可以使用 rm 命令删除 Docker 文件:
````
sudo rm -rf /var/lib/docker
````
````
sudo rm -rf /var/lib/containerd
````
就是这样! Docker 已成功删除。
## 在Arch Linux上安装Docker
```
sudo pacman -S docker
```
安装完成后需要启动Docker服务并设置为开机自启
```
sudo systemctl start docker
sudo systemctl enable docker
```
运行以下命令来验证Docker是否正常工作
```
sudo docker run hello-world
```
默认情况下只有root用户才能运行Docker命令。为了避免每次运行Docker命令时都需要使用sudo可以将当前用户添加到docker组
```
sudo usermod -aG docker $USER
```
之后,需要注销并重新登录,或者重启系统以使更改生效。
安装Docker Compose
```
sudo pacman -S docker-compose
```
## 1panel
执行如下命令一键安装 1Panel:
````
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
````
## IP证书申请部署
- 在 [ZeroSSL](https://zerossl.com/) 中申请一个90天的证书
- 然后在VPS上输入以下命令
```
mkdir -p ./.well-known/pki-validation
```
- 随后在ZeroSSL中将所给出的类似**B992F08CB46748D02E4C553A4038BC.txt**复制;
- 将从ZeroSSL下载得到的文件打开复制里面的东西形成以下的格式然后将这些命令在VPS上面运行
```
cat << EOF | sudo tee ./.well-known/pki-validation/B992F08CB46748D02E4C553A4038BC.txt
254563C20918258D661E7D43D6A43A2A258857E191977DD5F740FBB9ABD25279
comodoca.com
ca5792984e3f0a1
EOF
```
- 开启一个临时HTTP服务器
```
python3 -m http.server 80
```
- 随后即可在ZeroSSL中验证证书并开启SSL。

89
content/awesome-360t7.md Normal file
View File

@ -0,0 +1,89 @@
+++
title = "综合工程:360T7刷ImmortalWrt"
date = 2024-09-24
[taxonomies]
tags = ["综合工程"]
+++
前言 上周花了四天成功的将一台 360T7 AX3000 路由器刷成ImmortalWrt系统并用上了无线校园网其中之艰辛前所未见。。。
<!-- more -->
## 序章
这一切都得从9月17日我在闲鱼上看到一台360T7说起正值中秋假期早上吃完饭看了看闲鱼突然发现同城有一台仅售60元的360T7路由器距离我3.4公里——要知道360T7可是AX3000的Wi-Fi6路由器信号强劲买60性价比简直无敌。正好缺一个路由器准备前往购买——
> 错误一没有事先详细了解这款机型的情况以为刷OP非常容易
于是说干就干,坐上地铁飞驰到达,卖家发了一个开机视频,一切正常,拿上路由器就回学校;
## 初见端倪
等到下午1点准备开干。这款机型没有SSH权限和USB口我提前准备好了ttl模块CH341以及杜邦线现在准备拆机并进行串口调试;
首先是极其结实的外壳里面有8处卡扣非常容易损坏;好在笔者手法过硬,没有出现各教程中卡扣裂开的情形。但刚刚打开外壳的一瞬间我就发现事情的不对:``主板上四个圆形串口是有焊锡的``,这下可如何是好?
> 错误二:大力出奇迹把串口撬开
这时候我想到焊锡并不结实直接用小刀或针刮开即可于是经过半小时四条杜邦线已经顺利的接上串口电脑的COM3口也成功访问到;然而离谱的事情发生了:``COM3口没有任何跑码数据显示一片空白``,这下坏事了。到底是怎么回事呢?有以下几种可能:
- CPU天生不跑码极其罕见需要换CPU
- COM口的波比特率错误96000115200
- 串口连接错误RTXTDXGND的顺序
- 接触不良(得上电烙铁)
经过排除变量,前三条已经确认无误,那么,接触不良该怎么办呢?于是我在外卖平台``买了一个电烙铁``此时已经下午6点...
## 成为电焊高手
此时我的另一位好友抗性面包以下简称K老师出现了并打算和我一起``将杜邦线焊接到串口上``。然而,并不熟悉的操作让我们险象环生:首先是焊锡不容易成形,加上了助焊剂松香又出现一大堆烟雾,宿舍一时间烟雾缭绕( 随即我们将电焊枪开到了400度在成功焊上一个点之后我将焊枪放在了鼠标垫上。。。
> 错误三:没有焊枪架
于是``鼠标垫被烫出一个大洞``。。。不过好在经过焊接ttl跑码界面已经成功出现此时似乎离成功只有一步之遥——
## 噩梦的开始
于是我和K老师大喜直接找了一个教程发现这个型号得降级安装于是``安装了github上名为360t7-upgrade的一个bin包``,然后问题就大了:现在系统连不上了😨😨😨
> 错误四:看都不看就刷进来历不明的包
## 希望与绝望
此时K老师和我有点麻运气这么好让我们刷到不匹配的包随后发现``360T7有数个版本手上的这个版本是Nand闪存``,所以现有的包不能适用。。此时我想到可以通过原厂固件刷回来救,但问题来了:我没有备份这个机型的固件
> 错误五:没有提前备份这个机型的固件
难道只能上编程器救砖?
经过仔细研究,发现``mtk的芯片可以使用名为mtk_boot的工具进入类似fastboot的界面救砖``而360T7正是用的mtk7981芯片。又经过艰难的一番操作终于刷入了一个可以使用的Uboot;但这个Uboot又出现了可怕😨的问题``系统无限循环,报错 bad_block ``而我们此时并不知道分区表的偏移量,无法进行操作。
这是怎么回事?难道内存已经坏块了?
此时时间已晚,不得不先休息,第一天过去了。。。
## 第二天
第二天的晚上我和K老师再度开始折腾这个路由器我认为☝``内存应该是没有真正坏块``,于是又又又经过查阅恩山论坛和各处博客,终于发现的问题的关键:应该先``刷bl2fip和ubi分区``于是我们用了新的uboot但新问题又又又又出现了mtd命令``无法操作bl2fip和ubi分区``,这是怎么一回事?
又又又经过查阅恩山论坛和各处博客发现该108M大分区表是锁分区的不能直接操作于是经过一番查找``使用了 Kmod 模块解锁了分区表``并刷入了bl2和fip似乎要好起来了😭但此时无形的大手再一次愚弄了我们系统``依然无限循环bad_block``。。于是现在我们强行刷入ImmortalWrt系统是可以的但``它只能运行在内存之中,一断电就会消逝``😭 总不能让它一直在内存里面跑吧。。
此时时间已晚,不得不先休息,第二天过去了。。。
> 致敬传奇liveCD跑server的运维大师🫡
## 第三天
第三天晚上我和K老师都有点疲惫现在无限循环bad_block的报错还未解决是umbm导致的在检测到坏块后会报错然而实际上我们的路由器并没有真正坏块是在刷入固件的时候导致了尾部的分区错误随即受到了umbm的制约。现在我们``要么刷一个支持umbm的系统要么刷一个支持umbm的uboot要么想办法关闭umbm``于是K老师编译了一个ImmortalWrt固件并刷了进去但此时由于前面刷错了bl2检验依然没有通过。。
此时时间已晚,不得不先休息,第三天过去了。。。
## 第四天
神奇的事情发生了K老师成功刷入了ImmortalWrt终于😭😭😭😭随即我们在ubuntu虚拟机中``编译了C语言写就的 inyn 校园网客户端``并通过SSH将ipk安装到了ImmortalWrt之上但此时``报错缺库``。。。又是一顿焦头烂额最后K老师使用了Go版本的 nyn 解决了问题我终于用上了无线校园网😭实际测试T7性能非常强大信号强劲支持Hnat硬件加速和多路复用速度轻松跑到800兆。
Done.
## 参考
[360T7刷机](http://www.ttcoder.cn/index.php/2023/07/11/p0/)

224
content/awesome-PVE-MCSM.md Normal file
View File

@ -0,0 +1,224 @@
+++
title = "综合工程:PVE安装与MC服务器搭建"
date = 2023-08-11
[taxonomies]
tags = ["综合工程"]
+++
前言 假期将至不少家里有闲置设备的小伙伴想尝试开设一个我的世界Minecraft服务器却不知从何下手。本文以 PVE-Debian-MCSM 为主线介绍其部署流程。
<!-- more -->
## 什么是PVE
PVE (全称 Proxmox Virtual Environment) 是一款开源免费的虚拟化环境平台同时支持KVM 虚拟机和 LXC 容器。它基于 Debian 和 KVM 技术开发,可在一台 PC 或服务器上同时运行Linux、OpenWRT、Windows 等实现计算、网络、存储一体化解决方案即所谓的“all in one”。类似的平台还有ESXi、Unraid等。
## 什么是MCSM
MCSManager 面板简称MCSM 面板)是一款全中文,轻量级,开箱即用,多实例和支持 Docker 的 Minecraft 服务端管理面板。
此软件在 Minecraft 和其他游戏社区内中已有一定的流行程度,它可以帮助你集中管理多个物理服务器,动态在任何主机上创建游戏服务端,并且提供安全可靠的多用户权限系统,可以很轻松的帮助你管理多个服务器。
具体步骤安装PVE并优化开设虚拟机并安装Debian安装mscm界面并开设实例配置网络服务。
## 准备工作
- 1.[PVE镜像推荐使用7.4版本](https://www.proxmox.com/en/downloads)
- 2.[Debian镜像](https://mirrors.tuna.tsinghua.edu.cn/debian/dists/)不建议使用DVD版会出现奇怪的问题。
- 3.[我们的老伙计Rufus](https://www.423down.com/10080.html)
- 4.[Purpur1.19 服务端](https://purpurmc.org/)
- 5.[MC启动器HMCL](https://hmcl.huangyuhui.net/)
- 6.[Zerotier客户端](https://www.zerotier.com/download/)
## 一.安装PVE并优化
1.将下载好的镜像用Rufus写入U盘。
2.将U盘插到目标主机上面进入BIOS-boot设置启动顺序。这里我使用二手浪潮服务器X99主板矿龙电源以及一块128G的SSD固态。注意大部分服务器主板有机箱入侵检测机制需要在说明书中找到特定针脚并用导电帽盖上否则无法开机。
3.进入安装界面选择install
随后跑码,进入如下界面,同意协议:
设置硬盘与文件类型可以选择ext4或者btrfs;
选择国家与地区这里需要手打出China
随后设置密码与邮件,邮件可以随便填:
然后设置网络连接这里插网线就有地址设置主机名并记下内网IP地址
检查无误后开始安装:
安装完成后 reboot。
4.浏览器打开 PVE 地址进入系统后我们需要给PVE换源。
## 换源
首先,移除(备份)一下 PVE 原始的官方源 (将 sources.list 改名为 sources.list.bak)
``mv /etc/apt/sources.list /etc/apt/sources.list.bak``
添加国内 Debian 软件源:
``nano /etc/apt/sources.list``
改为
```
deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib
deb-src https://mirrors.ustc.edu.cn/debian/ bookworm main contribe
deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib
deb-src https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib
```
``#编辑文件 pve-no-subscription.list``
``nano /etc/apt/sources.list.d/pve-no-subscription.list``
内容如下:
``deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription``
屏蔽 PVE 企业源:
``nano /etc/apt/sources.list.d/pve-enterprise.list``
将下面这一行注释掉 (前面加上井号)
``#deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription``
更新测试:
``apt-get update``
## 二.新建虚拟机并安装Debian
1.找到 local-btrfs(pve),在其中的 ISO 中上传下载好的 Debian 镜像;
2.随后创建虚拟机,选择 Debian 镜像并设置 CPU 核数与硬盘、内存大小;
3.一路确认后开机进入命令行界面即可开始Debian安装。我们选择graphical install
4.选择国家和语言,随后自动配置网络;
5.设置主机名,跳过域名设置;设置 root 账户名和密码、普通用户账户名与密码;
6.对磁盘进行分区,由于是虚拟机我们选择使用整个磁盘;
7.安装基本系统,随后将进入包管理器和大组件安装;
我们选择清华源速度较快。注意Debian 安装时默认开启安全源,这个源是国外的所以下载速度极慢,因此还需要修改配置文件。
在安装步骤进入到选择安装的桌面环境和软件时, 键入 Ctrl+Alt+F2 可以看到从图形界面转到了tty命令终端, 键入 Enter
这里修改软件源配置文件
```
nano /target/etc/apt/sources.list
```
修改debian-security源地址  `http://mirrors.ustc.edu.cn ` 目测最快
```
deb http://mirrors.ustc.edu.cn/debian-security bullseye-security main
```
修改后 Ctrl+X 退出保存,然后退出终端重新进入界面继续安装,键入 Ctrl+Alt+F5。
下载需要一些时间,此时可以饮口茶先,随后看到如下界面:
由于是服务器所以不需要桌面环境:
安装 grub 引导:
随后安装完成reboot后进入mscm的安装。
## 三.安装MCSM并开设实例
**1.开机进入tty1界面**
**2.安装JAVA环境**,不同版本的游戏的 Java 版本也不同。这里我们使用1.19版,需要安装 Java18。
安装 wget 和 下载 Java18
``apt install wget && wget http://img.zeruns.tech/down/Java/OpenJDK18U-jre_x64_linux_hotspot_18.0.1_10.tar.gz``
创建安装目录
``mkdir /usr/local/java/``
解压当前目录下的 JDK 压缩文件
``tar -zxvf OpenJDK18U-jre_x64_linux_hotspot_18.0.1_10.tar.gz -C /usr/local/java/``
软链接程序到环境变量中
``ln -sf /usr/local/java/jdk-18.0.1+10-jre/bin/java /usr/bin/java``
测试是否安装正常,显示 `openjdk version "18.0.1" 2022-04-19` 则为正常
``java -version``
**3.端口开发**,面板需要 23333和24444 端口,游戏服务器默认端口是 25565。
在 PVE-防火墙中打开它们。如果还是不行,执行如下命令:
```
systemctl stop firewalld
systemctl disable firewalld
service iptables stop
```
从而关闭防火墙。
**4.安装面板**,这里使用一键安装命令(注意该脚本仅适用于 AMD64 架构)
``wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup.sh | bash``
执行完成后,使用 ``systemctl start mcsm-{web,daemon} ``即可启动面板服务。使用 ``systemctl enable mcsm-{daemon,web}.service ``实现开机自启。
**5.在浏览器中打开该地址**加上23333端口后缀即可看到面板账户为root密码为123456。
**6.新建实例**,上传 Purpur1.19 服务端,设置名称随后开启实例
**7.随后我们可以在** 配置文件中设置游戏的相关选项,如关闭正版验证等。
**8.大功告成**,此时打开 HMCL 启动器,即可加入游戏。
## 四.配置联机网络
1.此时不要忘记需要和小伙伴们一起玩耍。如果你家里有公网固定 IPv4 或者 IPv6直接输入联机即可如果没有公网IP此时就需要进行内网穿透或者DDNS。
这里介绍一种名为 zerotier 的工具。
2.首先在 https://www.zerotier.com/ 注册并创建一个私有网络;
3.首先在虚拟机中安装 curl 命令支持
``apt-get install curl``
4.安装gnupg非对称信息加密系统通讯所需必备软件
``apt-get install gnupg``
5.安装 ZeroTier
``curl -s https://install.zerotier.com/ | bash``
安装成功后提示如下:
``Success! You are ZeroTier address [ xxxxxxxxx ].``
方括号内地址为类似于MAC地址。
6.设定开机自启动(分别执行如下命令)
``systemctl start zerotier-one.service``
``systemctl enable zerotier-one.service``
7.加入自己的私有网络
``zerotier-cli join xxxxxxxxx``
8.大功告成!此时只要让小伙伴们下载 zerotier 客户端并加入相同的私有网络,即可一起快乐联机!

View File

@ -0,0 +1,176 @@
+++
title = "综合工程:Android TV 折腾小记"
date = 2023-08-14
[taxonomies]
tags = ["综合工程"]
+++
前言 由于 AppleTV 的高昂的售价和普通电视盒子广告的泛滥,一台开源、多功能的原生安卓电视盒子逐渐成为智能家居的必备神器。出于对 IPTV、YouTube 和家庭影院等需求,以及对一面赏心悦目电视墙的期待,这里分享 Android TV 以下简称ATV安装的一些要点。
<!-- more -->
## 零.要实现的目标
- 实现自己的设备(X86/Arm)上安装TV系统
- 实现**无开机广告和内置广告**
- 实现**海报墙效果**(矩形磁帖),或自定义安卓桌面启动器;
- 实现**影视番剧观看**基于TVbox/Kodi/Kazumi
- 实现**国内流媒体观看**包括Bilibili爱优腾等等
- 实现**国外流媒体观看**包括NetflixYouTubeDisney+Spotify等等
- 实现**家庭影院**Emby类软件自动刮削
- 实现**IPTV**观看,采用自抓取源或者公共源;
- 实现**复古游戏**游玩包括GBA/FC等等基于RetroArch/PPSSPP/Emuelec,可以连接手柄;
- 实现**游戏主机串流**包括PS/Xbox/Switch等等
## 一.选择合适的平台
X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子已经非常成熟价格便宜也可以使用运营商的电视盒子进行刷机性能并不会太弱而X86平台往往价格偏贵且解码性能和功能适配没有和电视生态联系紧密因此建议首选Arm平台。
## 二.选择合适的系统
无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且不要迷信所谓的“无广告”电视盒子,它们往往配置低下,性价比不高且还是有内置付费项目,甚至有一些根本没有做到去广告。
| 特性 | **Android-x86** | **Android TV** |
|--------------------|---------------------------------------------------------|----------------------------------------------------------|
| **目标用户** | 面向 PC 用户,将 Android 运行在 x86/x86_64 设备上。 | 面向电视和机顶盒用户,优化用于遥控器或语音操作。 |
| **适配设备** | 传统 PC、笔记本、平板电脑等 x86 架构设备。 | 智能电视、电视盒子等 ARM 或特定芯片架构设备。 |
| **界面设计** | 和标准 Android 类似,为触摸屏和鼠标键盘优化。 | 专为大屏设计,使用 Leanback UI适配遥控器操作。 |
| **Google 服务** | 默认不包含 Google 服务,需要用户手动安装。 | 官方版本内置 Google 服务(例如 Play Store、Assistant。 |
| **开机启动器** | 使用标准 Android 桌面启动器Launcher3。 | 使用电视优化的启动器Leanback Launcher。 |
| **架构支持** | 专注于 **x86/x86_64**,但支持 ARM 仿真(通过 Houdini。 | 主要支持 **ARM/ARM64** 架构,有限支持 x86。 |
| **硬件支持** | 需要额外优化,部分硬件(如 GPU 驱动)可能无法正常工作。 | 深度集成硬件,默认支持电视硬件(如 HDMI CEC、音频输出。 |
| **应用市场** | 默认不内置 Google Play需要手动安装 Aurora Store 等替代方案。| 默认集成 Google Play 商店,提供大屏优化的应用程序。 |
| **遥控器支持** | 不适配遥控器,主要使用鼠标键盘操作。 | 专为遥控器优化,支持按键导航和语音输入。 |
| **开源贡献** | 由社区维护,支持各种自定义和实验功能。 | 由 Google 官方主导OEM 厂商提供硬件优化支持。 |
---
> Android-x86 的安装类似windows需要命令行界面配置Android TV安装类似 Android手机通过刷分区或TWRP卡刷安装。
> Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等的驱动可能不兼容或需要额外的配置。
**刷 Tosathony Android TV X86 准备工作**
- 1.[Tosathony 制作的 Android TV x86 9.0](https://pan.baidu.com/s/17eDDrf4WzWVmrc9hLw-c_w?pwd=a728)
- 2.[Rufus 写盘工具](https://www.423down.com/10080.html)
- 3.[Android tv Remote 手机遥控器软件:](https://android-tv-remote-control.en.softonic.com/android)
- 4.[Tiny ADB 软件](https://androidmtk.com/tiny-adb-and-fastboot-tool#installer)
**一些可安装的软件**
- [kodi](http://www.kodiplayer.cn/)
- [当贝市场](https://www.dangbei.com/apps/)
- [哔哩哔哩TV版](https://www.fenxm.com/104.html)
- [ATV Launcher](https://www.fenxm.com/592.html)
## 一、写盘BIOS启动
1.使用 Rufus 将下载好的 ATV 镜像写入U盘。
2.将U盘插到目标主机上并设置 BIOS-boot 优先启动,不同设备进入 BIOS 的按键不同大部分是F2或者DEL
## 二、开始安装
1.boot 成功后可以看到如下界面:
2.我们选择自动安装:
3.经过跑码后进入若干个选项,一路 yes 过去,文件系统选 ext4;
随后运行 ATV 并拔出U盘
## 三、进入Google界面
由于国内网络环境问题,导致一些界面无法进入,可使用如下方法或全局科学。
1.如果卡在 Google的logo 界面或者动画比较缓慢,或者重启后无法进入 ATV 界面,需要在``BIOS-Advanced-OS selection``中将其设置为Windows 8.X或者Android。
2.然后可以看到 PayPal 界面,这里使用可以 `Ctrl+Alt+F1` 进入命令行界面,随后输入
``pm disable com.tosanthony.tv.networkprovider #注意空格``
回车执行,随后按`Ctrl+Alt+F7或F8`回到图形界面。
3.下一步,我们可以看到自动更新界面,这里我们需要禁用它:
同样`Ctrl+Alt+F1` 进入命令行界面,随后输入
``pm disable com.google.android.tungsten.setupwraith #注意空格``
回车执行,随后按`Ctrl+Alt+F7或F8`回到图形界面。
4.此时会进入一个 WiFi 界面如果你是使用网线直连就没有问题或者用键盘连接家里的WiFi作者因为工控机没有WiFi模块在这里卡了半天。
5.随后进入了 AndroidTV 的桌面。
## 四、安装软件并设置桌面启动
1.首先我们在设置中找到“设置”>“设备首选项”>“关于”然后在“构建”上点击几次以解锁“开发人员”选项随后开启USB调试开关。
2.随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址然后用Tiny ADB连接上去这里使用命令``adb connect <IP 地址> ``随后在ATV端授权连接
3.接着使用命令adb install <path to android app.apk>将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。
**一些 ADB 常用命令**
```
adb reboot #将重启 Android 设备。
adb reboot recovery #将设备重新启动到恢复模式。
adb push <local> <remote> #将文件从您的 PC 复制到您的 Android 设备。
adb shell wm density <dpi> #改变显示器的像素密度。
adb kill server #切断 PC 和 Android TV 之间的连接。
```
4.如果存在一些软件无法安装可开启ARM兼容层具体方法为在 `dl.android-x86.org/houdini/9_y/houdini.sfs` 中下载得到`houdini.sfs`,把文件名改成`houdini9_y.sfs`随后拷贝进U盘进入命令行界面输入 `ls` 找到 storage 目录,输入 `cd storage` 进入你的U盘输入 `ls` ,查看你拷贝的 `houdini9_y.sfs` 文件,并复制到该目录下。
```
cp houdini9_y.sfs /system/etc
enable_nativebridge
reboot
```
5.安装一些软件包后我们发现需要代替掉ATV自带的桌面从而形成海报墙的效果这和 linux 的桌面环境切换有异曲同工之处。注意:替换前需要已经安装完成其他桌面!!!!(比如 ATV Launcher )我们使用以下命令禁用 google 默认的桌面。随后重启即可看到ATV的海报墙。
``pm disable-user --user 0 com.google.android.tvlauncher ``
恢复原有桌面:
```
C:\Users\root>adb shell
generic_x86:/ $ su
generic_x86:/ # pm enable --user 0 com.google.android.tvlauncher
Package com.google.android.tvlauncher new state: enabled
```
## 后记
- [Android TV google 官方 TV 库](https://github.com/googlesamples/leanback-showcase)
- [智能电视,电视盒子开发 SDK](https://github.com/boxmate/tvframe)
- [选中框切换动画,适用于电视](https://github.com/EZJasonBoy/FocusChangeAnimation)
- [Android tv盒子投影仪 控件](https://github.com/FrozenFreeFall/Android-tv-widget)
- [TV 项目常用工具(焦点问题,适配问题等.)](https://github.com/genius158/TVProjectUtils)

View File

@ -0,0 +1,163 @@
+++
title = "综合工程:安卓刷机与root教程"
date = 2023-08-13
[taxonomies]
tags = ["综合工程"]
+++
前言 自安卓系统诞生以来root 一直是玩机的必备过程。时至今日,在安卓定制系统日益完善的情况下,能 root 的机型越来越少,本文以小米手机为例,介绍 root 的具体方法。
<!-- more -->
## **一.什么是root**
这涉及安卓的权限系统。Andoird 系统是基于 Linux 内核的其中的权限大致可以分为四级即一般软件权限用户权限ADB 权限和超级管理员权限su。而所谓 Root 也就是使手机获得超级管理员的权限但是出于种种原因厂商默认不提供超级管理员的权限因此root的本质就是一个提权的过程。
## **二.为什么要root**
- 国内定制的安卓系统充满着云控,反诈以及各种广告,预装软件,这种系统实在为极客们所不容;
- 以权限系统为例,一般软件权限需要经过用户同意,即每次安装前出现的各种请求弹窗;而 ADB 权限常常用于开发者模式,可以调试一些比较深层的设置;至于 root 权限则为系统的最高权限,与 Windows 的 system 权限相当(比 administer 还高)。因此,当我们具备了 root 权限后,就可以实现许多功能,例如屏蔽广告,虚拟定位,安装 Google 框架和软件满血运行CPU等等。
## **三.哪些机型可以root**
在 2023 年的今天,能 root 的机型还是比较少。首先是最容易的一加和小米,可以申请官方解 BL 锁需要等待7天其次是联想索尼等海外品牌也比较容易而 oppo 和 vivo 及其子品牌 iqoo 和 realme 有些是不行的苹果的越狱在10代前是可以的而华为全部机型都是不可以的除非上万能的淘宝收费解锁直接烧录芯片至于三星BL 锁一旦解开就会触发芯片物理熔断机制,无法使用 pay 以及升级系统体验极差。因此刷机有风险root 需谨慎!刷机前要了解相应的厂商,考虑保修和变砖的问题!
[各品牌手机root情况汇总](https://github.com/KHwang9883/MobileModels/blob/master/misc/bootloader-kernel-source.md)
> 截至2024年5月小米手机解BL锁已经收紧,条件非常苛刻.
## **四.如何root**
首先我们要了解安卓系统的分区和启动。安卓的分区包括:
- recovery 分区类似PC端的PE环境手机上的恢复出厂设置即为从 recovery 恢复;
- cache 分区,保存系统最常访问的数据和应用程序。 擦除这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容;
- boot 分区类似PC端的MBR分区用来引导系统启动擦除后手机会卡在开机 logo 的界面;
- system 分区包括操作系统与软件vendor 定制文件与库文件等等,擦除后会卡在开机的动画界面;
- data 分区,存放用户数据和系统设置,擦除后不影响系统的运行。
手机启动阶段存在名为 bootloader 的程序,与 PC 端的 BIOS 类似,被称为 fastboot 模式,厂商一般会将其锁定。早些年间,存在大量一键 rootkingroot 之类的软件,可以直接刷写 root 包,获得 root 权限,但成功率不高;
因此,现在**主流的刷机步骤**为
- 解开 bootloader俗称解BL锁. [BL锁原理参考](https://telegra.ph/BL%E9%94%81%E7%9A%84%E5%8E%9F%E7%90%86%E6%98%AF%E4%BB%80%E4%B9%88-05-29)
- 打开机器上的允许USB调试;
- 备份手机数据,即备份Data分区(可使用Neobackup或系统自带),字库/基带/官方固件,桌面样式截图;
- 下载该机器的官方原厂包以及要刷的第三方系统包;
- 提取以上两个包中的 boot.img 和 recovery.img 文件备份;
- 将机器与PC等设备连接,并进入 bootloader;
- 刷入第三方 recovery比如大名鼎鼎的 TWRP,或者对应新系统的recovery.img
- 进入 recovery 模式,清空原系统数据;然后刷入原系统作为底包,避免出现固件问题;
- 刷入新系统Zip包,随后重启,再次进入 recovery .
- 刷入 Magisk (面具)工具,随后重启进入桌面,安装 Magisk(apk),通过修补 boot.img 文件获得 root 权限;
- 安装 Magisk 模块和 Lsposed 框架(可在其中下载许多模块,推荐一键救砖,系统优化和 root 隐藏)
- 安装 Momo 软件检测系统环境是否正常。
> 如果旧系统上没有root权限无法直接备份Data分区,可以先用系统自带的备份,并下载好原版系统镜像以防止刷机失败.
## **五.确定你要刷的系统**
可以选择官方原版,官改版,海外版和类原生版。相关链接:
- [小米各机型 MIUI 历史版本分类索引](https://miuiver.com/)
- [Android原生项目大全](https://mi.fiime.cn/Android)
## **六.具体操作流程**
1.笔者以 Redmi k30pro 5G 这款手机为例,首先我们进入手机设置界面,进入“我的设备”,在“全部参数”中找到“ MIUI 版本”,连续点击后开启开发者模式,随后在“更多设置”中开启 USB 调试, USB安装 功能。
2.随后下载大名鼎鼎的[搞机工具箱](http://jamcz.com/) 由B站up主晨钟酱出品里面具有许多功能包括进入各个模式无极调速等等
然后我们进入[小米官网](https://www.miui.com/unlock/download.html) 下载官方解锁工具需要登陆小米账号并等待7天随后即可解锁。
3.解锁完成后在[MiFirm网](https://mifirm.net/downloadtwrp/148) 中下载对应的 TWRP 版本,注意 redmi 的海外名为 Poco 。
4.随后用数据线连接手机,用其中的一键刷写刷入 TWRP随后下载你要刷的系统的 rom 包,下载时注意一并下载 boot.img 文件,作为 Magisk 的修补用。然后下载 [Magisk](https://magisk.me/zip/) 包,与 rom 一起存入TF卡或者U盘中。
>注意,由于本机型为新型[**AB分区**](https://www.jianshu.com/p/b2726b304801)因此如果刷机失败需要下载原厂包用以恢复AB分区否则无法启动和安装rom。
5.通过搞机工具箱进入 recovery 模式首先我们在wipe中清除Data、Cache两个分区俗称“双清”随后在高级清除选项中清除 Data、Cache、Dalvik Cache 和 System 分区,俗称“四清”。
6.清除完成后即可开始刷机。将 TF 卡或者U盘插入手机在“安装”中选择 rom 包,右滑确认刷机;随后如法炮制,刷入 magisk.zip 包,不然会卡在开机 logo 界面,俗称“卡米”。
7.刷完之后重启,则会进入安装界面。**注意:如果刷的是海外版的包,千万不能联网安装,否则会失败且变为国内版。**
8.此刻我们将下载好的 boot.img 文件复制到手机上,打开 Magisk 软件,在其中选择修补一个文件,选中 boot.img修复完成后可以看到超级用户一栏可以使用了说明 root 完成。
> 截至2024年5月1日,该机已经刷入 crdroid 10.4 类原生系统,非常丝滑,步骤同上,但需要刷入[新固件](https://xiaomifirmwareupdater.com/firmware/lmi/stable/V14.0.1.0.SJKMIXM/).
> 注:这里使用的 root 方案为[magisk](https://github.com/topjohnwu/Magisk),你也可以使用[kernelSU](https://kernelsu.org/zh_CN/)或者[apatch](https://apatch.dev/zh_CN/)等。
> adb和fastboot命令示例
```
adb命令
adb devices :列出adb设备
adb reboot :重启设备
adb reboot bootloader :重启到fastboot模式
adb reboot recovery :重启到recovery模式
adb reboot edl :重启到edl模式
adb sideload <要刷写的文件路径> 刷写模块如Magisk
fastboot命令
fastboot devices :列出fastboot设备
fastboot reboot :重启设备
fastboot reboot-bootloader :重启到fastboot模式
fastboot flash <分区名称> <镜像文件名> :刷写分区
fastboot oem reboot-^<模式名称^> :重启到相应模式
fastboot oem device-info :查看解锁状态
```
## **七.常用Root方案**
- [Magisk](https://jesse205.github.io/MagiskChineseDocument/)
- [Kitsune Mask](https://jesse205.github.io/MagiskChineseDocument/delta/main.html)
- [KernelSU](https://kernelsu.org/zh_CN/)
- [KernelSU Next](https://rifsxd.github.io/KernelSU-Next/zh/index.html)
- [APatch](https://apatch.dev/zh_CN/)
## **八.Root后的模块安装**
在 Root 管理器中安装 Zygisk-Lsposed 模块,即可使用 Lsposed在 Lsposed 中可以安装 HMA, Amarok QAuxiliary 模块,并配合 MMRL 等软件等等。
> 免 Root 的平替方法,目前这一套流程也很成熟了:
- 利用 ADB 权限的 Shizuku
- 利用 Device Owner 权限的 Dhizuku
- 利用 VPN 的流量过滤
## **后记**
关于 root 的其他用途还有很多,这里就不一一列举,分享一些常用模块:
- [lsposed模块大全](https://modules.lsposed.org/)
- [刷了 Magisk 之后装什么?我推荐这 20+ 个模块](https://sspai.com/post/68531)
## **参考**
- [lineageos镜像](https://download.lineageos.org/devices/lmi/builds)
- [lineageos教程](https://wiki.lineageos.org/devices/lmi/install/variant1/)
- [机型介绍](https://wiki.lineageos.org/devices/lmi/variant2/)
- [XDA-没有声音的问题解决](https://xdaforums.com/t/no-sound-issue-can-u-help.4479225/)
- [XDA-更换内核](https://xdaforums.com/t/kernel-overclocked-no-gravity-2023-08-28-protonclang.4531497/)

View File

@ -0,0 +1,206 @@
+++
title = "综合工程:Arch从入门到入土"
date = 2023-08-16
[taxonomies]
tags = ["综合工程"]
+++
前言 Arch linux是一个轻量、灵活、滚动更新的 Linux 发行版衍生了诸多优秀的桌面端linux。其官方Wiki更是被称为技术界的“武林秘籍”
但由于该Wiki的中文版比较陈旧安装教程不太清楚故先以虚拟机安装Arch为例实际操作一番。
<!-- more -->
***
准备工作:需要
- 虚拟机环境,这里推荐使用VMware Workstation Pro.
- ISO镜像
VM学习版https://www.ahhhhfs.com/33472/
官方镜像: https://geo.mirror.pkgbuild.com/iso/2023.08.01/
***
## **一、新建虚拟机**
1.打开VM文件—新建虚拟机—典型—下一步对于硬盘要求建议至少20G作为后续分区使用CPU及内存根据实际需求分配一般取半数。
注意完成后需先在编辑虚拟机设置—选项中设置引导为UEFI否则会导致奇怪的Boot问题。
2.开启此虚拟机随后进入界面回车跑码后进入tty1。
## **二、联网并分区**
1.使用 **dhcpcd** 命令获取IP地址由于虚拟机使用NAT故联网容易。
2.使用 **ping www.baidu.com** 命令检查是否联网若出现ttl,time=xx ms等数据说明成功随后再 **Ctrl+C** 停止命令运行,~~避免百度被DDOS攻击死掉。~~
3.使用 **timedatectl set-ntp true** 命令更新系统时间,该命令无输出,正所谓无事发生就是最好的。
4.使用 **fdisk -l** 命令查看系统分区,由于虚拟机的存在只会显示一块硬盘。
5.接下来是Arch安装中较难的一部分以20G硬盘空间为例我们需要划分出512MB的引导分区15G的根分区以及5G左右的交换分区。由于纯命令行分区比较繁琐这里使用 **cfdisk** 命令打开分区工具。
回车选择gpt类型可以看到如下界面
使用左右方向键移动至**New**,新建一个分区,大小为**512MB**,回车确认,并移动至**type**将其类型改为**EFI system**随后如法炮制建立根分区类型为linux filesystem和交换分区linux swap
注意:上诉操作完成后需在**Write**中选择**yes**,否则无法保存分区,随后**quit**回到命令行。
6.分区结束后分别对其进行格式化,命令为
```
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkswap -f /dev/sda3
```
注意不同分区类型与格式所用命令不同。
7.格式完成后进行挂载,使用如下命令:
```
swapon /dev/sda3
mount /dev/sda2 /mnt
mkdir /dev/sda2 /mnt/home
ls /mnt
mkdir /mnt/boot
mkdir /mnt/boot/EFI
mount /dev/sda1 /mnt/boot/EFI
ls /mnt
```
完成后即可开始组件下载。
* * *
## **三、安装基本组件**
1.使用大名鼎鼎的**vim**编辑器,将下载镜像源改为国内,提高下载速度**vim /etc/pacman.d/mirrorlist**
推荐使用清华源,在首行中改为如下命令:
```
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
```
随后**ESC****: wq** 保存退出。
2.安装基本包,使用命令
```
pacstrap /mnt base base-devel linux linux-firmware dhcpcd
```
一路回车下载。
3.生成**fstab**文件 ,使用命令
```
genfstab -U /mnt > /mnt/etc/fstab
```
自动挂载分区,并用**cat /mnt/etc/fstab**观察分区情况。
4.使用**arch-chroot /mnt**命令切换至系统环境下此时可以设置时区语言和主机名hostname
设置上海为系统时区:
```
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
```
设置主机名: **vim /etc/hostname**,写入任意你想要的名字。随后在**vim /etc/hosts**中输入如下内容,将**name**改为主机名。
```
127.0.0.1 localhost
::1 localhost
127.0.1.1 name.localdomain name
```
设置语言:使用**vim /etc/locale.gen**命令去掉 **en_US.UTF-8 UTF-8** 以及 **zh_CN.UTF-8 UTF-8** 行前的注释符号,并用**locale-gen**生成新locale用**echo 'LANG=en_US.UTF-8' > /etc/locale.conf**命令确认输出。
4.设置root密码使用**passwd**命令,设置并重复密码。
5.安装微码:根据硬件选择命令:
**pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD**
6.安装引导程序:
```
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
```
生成配置文件:
```
grub-mkconfig -o /boot/grub/grub.cfg
```
7.退出并重启虚拟机:
```
exit # 退回安装环境
umount -R /mnt # 卸载新分区
reboot # 重启
```
若成功进入登录界面即为成功,可使用**neofetch**命令打印系统信息。
***
## **四、安装图形界面**
为便于在虚拟机中操作我们可以安装KDE-plasmaXfce等桌面环境。
1.使用**dhcpcd**获得地址。
2.新建普通用户**useradd -m -G wheel username** 替换username为你的用户名并设置密码**passwd username** 。
3.配置Sudo,使用**pacman -S sudo**安装并在**ln -s /usr/bin/vim /usr/bin/vi/visudo** 中删除 **%wheel ALL=(ALL)ALL** 前的注释符。
4.reboot后开始安装驱动。由于~~NVIDIA fuck you~~ 众所周知的原因,独显驱动比较难以安装,建议先只上核显。
以此为例若为AMD核显命令为
```
sudo pacman -S xf86-video-amdgpu
```
OpenGL和mesa:
```
sudo pacman -S mesa xf86-video-amdgpu vulkan-radeon libva-mesa-driver mesa-vdpau
sudo pacman -S opencl-mesa lib32-vulkan-radeon lib32-mesa
```
5.使用命令
```
pacman -S plasma-meta konsole dolphin
```
安装KDE组件。
6.开启sddm守护进程
```
systemctl enable sddm
systemctl start sddm
```
7.reboot后进入桌面环境安装完成。
> 添加Windows引导
```
安装 os-prober首先确保系统中安装了 os-prober这是一个用于检测其他操作系统的工具。
sudo pacman -S os-prober
sudo os-prober
更新 GRUB 配置:更新 GRUB 的配置文件,使其包含检测到的 Windows 引导项。
sudo grub-mkconfig -o /boot/grub/grub.cfg
如果GRUB 配置中 GRUB_DISABLE_OS_PROBER=true ,会禁止 os-prober 在 grub-mkconfig 运行时检测其他可引导的分区或系统。
打开 /etc/default/grub 文件进行编辑:
sudo nano /etc/default/grub
确保以下设置处于如下状态,即 GRUB_DISABLE_OS_PROBER 设置为 false
GRUB_DISABLE_OS_PROBER=false
如果该行不存在,可以手动添加或者修改为上述内容。
保存文件并退出编辑器后,运行以下命令更新 GRUB 配置:
sudo grub-mkconfig -o /boot/grub/grub.cfg
```
## **后记**
设备的多样导致安装中可能会出现一些奇怪的问题,需要自行搜索学习,以不断提高技术水平。

View File

@ -0,0 +1,95 @@
+++
title = "综合工程:ChromeBook研究记"
date = 2023-08-15
[taxonomies]
tags = ["综合工程"]
+++
前言 ChromeBook 作为国外一款定位为商务办公和学生入门的机器其性能在2023年的当下似乎已经过时在其退出中国市场后更是接近绝迹。不过针对特殊需求下的部分机型在今天仍然极具性价比。
<!-- more -->
作为一个垃圾佬,作者常常去发掘二手平台的诸多“洋垃圾”;而就在某一天,一台名为 ASUS ChromeBook C302 的机器吸引了我的注意力,且看其配置:
此前作者一直认为 ChromeBook 只存在于 Google 的 Pixelbook 机型之上,就如同 Mircosoft的Surface Pro 一样;实际上,主流 OEM 厂商——美帝良心想、社会主义戴、惠普宏碁华硕三星等等—-都推出过 Chromebook。
但本次所说的这台 ASUS 的机器属实让我眼前一亮质感上佳的银白色全金属外壳360度可翻转的触摸屏以及最大10小时的续航和仅仅1.15千克的重量这简直是轻薄本和平板的完美结合美中不足的是其接口较少两个type-C、一个3.5mm耳机口和SD卡接口显得有些单薄而在性能上Intel m3-6y30和8+32G的组合只能说差强人意。
不过,作为触摸屏和翻转本的结合,用来当阅读器、上网本和视频播放器以及盖泡面上实用性极强,在亚马逊的 kindle 退出中国市场后阅读器市场群魔乱舞高昂的售价和低配的机型遍地横行而一般的平板生态和手机重复价格不菲如果没有游戏需求ChromeBook 是不错的选择。
到祸啦家人们!我们看看其实际效果究竟如何?首先映入眼帘的是经典的 Chrome OS 界面这里注意登录需要有Google的账号Gmail邮箱如果暂时没有可以用访客模式登录在该模式下的一切操作不会保存在硬盘似乎很好的保护了隐私而在登录谷歌后可以看到其完善的生态包括原生的 play 商店、Chrome 浏览器Gmail 邮箱等等。
那么ChromeBook 有哪些玩法呢?
## 一.进入开发者模式
我们假设你已经有了一个 Google 账号,并在往期的博客中部署了 openwrt那么此时通过全局科学让 chromebook 联网,随后登录账号,此时我们完成了第一步;
随后拆开后盖,拧下主板上的 BIOS 写保护螺丝。注意在拆卸背板的时候,有两颗螺丝藏在上侧脚垫下,需要先用工具去除脚垫再拆卸这两颗螺丝;下侧的两个脚垫下没有螺丝。
随后打开背板,卸下图示位置(在蒙皮下)的大螺丝;
随后装回后盖按住键盘上的Esc和“刷新”键不动然后按下电源键。这样Chromebook会进入“恢复”模式;
然后同时按下键盘上的Ctrl键和D键;
按下Enter系统重启
这时会有一声“滴”的BIOS提示音。
随后等待Chrome OS重置即可。
重置完成后看到如下界面以后每次开机都要按Ctrl+D进入系统;
随后在设置-高级中可以看到开发者模式已打开此时传到ChromeOS中的其他APP即可安装。
## 二.安装其他系统
如果你不喜欢 ChromeOS 或者需要 linux 环境那么可以尝试安装其他系统例如FydeOS,manjaro等。我们以crouton脚本为例需要全局科学
这里是 crouton 项目的github地址``https://github.com/dnschneid/crouton``
由于我们已经进入开发者模式这时打开chromeOS的浏览器同时按住ctrl和alt和t会打开一个命令行窗口。 输入命令 shell ,回车,之后会出现 linux 的真正命令行。随后安装 crouton,如果你是用 chromeOS 下载的 crouton那么这个文件应该在~/Downloads目录下。 执行命令:
``sudo sh ~/Downloads/crouton -r list``
列出所有可以用的发行版版本。像ubuntudebiankali等等。 随后使用命令列出所有可以选择安装的组件:
``sudo sh crouton -t list``
这其中就包括各种桌面环境gnomekdexfacelxde啥的。 我们选择最轻量的lxde
``sh crouton -r stretch -t lxde``
随后设置用户名密码等等。安装完成后在chromeOS的linux shell里面输入命令
``sudo startlxde``
就能启动 linux 了。
实际上crouton 的原理,是基于 linux 下的一个软件, chroot
在linux系统中它可以把linux系统的根目录也就是 / ),切换到其它的目录。 crouton 利用这一点,将 chromeOS 的根目录切换到指定的安装了另一系统的文件。而且会出现两个特性为linux 可以享受到 chromeOS 的驱动支持,不用担心驱动问题,且使用的是 chromeOS 的系统内核。
由于该内核过于精简,会出现一些服务跑不了的情况,这时我们可以用第二种方法:刷 BIOS。我们进入 linux shell插入一个空U盘输入如下命令
```
cd
curl -LO mrchromebox.tech/firmware-util.sh
sudo install -Dt /usr/local/bin -m 755 firmware-util.sh
sudo firmware-util.sh
```
选择标注了“Full ROM”的选项按照提示备份BIOS和刷入BIOS随后 reboot然后可以按正常的装系统流程Rufus写入ISO启动
注意:需要先删除 ChromeBook 的硬盘分区仅支持UEFI启动且 Windows 驱动不太完整。
## 后记
合适的设备总是相对而言的,只要符合需求即可,不必过多的追求工具的完美。

View File

@ -0,0 +1,57 @@
+++
title = "综合工程:黑群辉NAS极速安装"
date = 2023-08-17
[taxonomies]
tags = ["综合工程"]
+++
前言 作为NAS家族中的重要一员Synology的DSM以完善的服务和较高的售价闻名于世因此一般玩家倾向于工控机加黑群晖的方案组建自己的文件服务器。本文就黑群辉安装做了详细阐述。
<!-- more -->
**准备工作****需要一个U盘一台主机(包括屏幕与键盘)以及至少一块硬盘**。
- [Rufus](https://www.423down.com/10080.html)
- [arpl-1.0-beta2.img](https://www.52pojie.cn/thread-1745197-1-1.html)
**注意**
- 该U盘作为启动器在安装完成后不可取下
- 截至本文撰写的日期,蜗牛星际被黄牛抬价,可使用路由器工控机加硬盘的方案;
- 硬盘需机械硬盘SSD阵列会出奇怪的问题。
> 安装流程:**ISO镜像烧入BIOS启动选择版本编译安装进入群辉界面安装DSM**。
## **一、ISO镜像烧入**
首先我们[下载arpl-1.0-beta2.img文件](https://www.52pojie.cn/thread-1745197-1-1.html)随后通过写盘工具这里推荐Rufus将该文件写入U盘中。
> 注意U盘将被格式化随后我们弹出U盘并将其插到主机上面。
## **二、BIOS启动编译安装**
开机并按F2或DEL键进入BIOS设置boot顺序为U盘优先;
记下Access后面的地址随后在另一台主机的浏览器上访问;
选择DSM版本这里我们以DS3615为例注意DS918对网卡要求高需确认好再选择回车确认
> 群晖设备型号与套件架构参表.https://www.shenzhuohl.com/syno_list.html
接着选择版本号以42962为例后面需下载对应的系统
然后输入一个序列号,由于是黑群晖所以让其随机生成。
随后build the loader,进入跑码界面,编译安装需要一些时间;
完成后boot the loader,当出现内网地址时便成功了,记下版本号与对应的型号;
## **三、进入群辉界面安装DSM**
进入刚刚看到的内网地址或用群辉助手https://finds.synology.com/#自动查找从群辉的官网下载对应的系统进入安装程序这里有个重启时间为10分钟此时可以饮口茶先。
安装完成后即可进入界面,随后添加储存池。

500
content/awesome-openwrt.md Normal file
View File

@ -0,0 +1,500 @@
+++
title = "综合工程:OpenWrt路由部署与软件编译"
date = 2023-08-12
[taxonomies]
tags = ["综合工程"]
+++
前言 openwrt 是一个自由的、兼容性好的嵌入式 linux 发行版。作为软路由玩家必备的一款神器可以实现诸如去广告多拨和科学上网等多种功能。本文介绍openwrt在各种平台上的部署流程。
<!-- more -->
## **要实现的目标**
- 1.IPv6 分配到每个设备;
- 2.NAT类型为NAT1全锥形
- 3.可控的流量记录与IP控制/QOS
- 4.可靠的硬件加速;
- 5.多线多播/宽带提速;
- 6.PPPoE拨号替代一部分光猫功能
- 7.智能DNS配置与去广告
- 8.VPN配置回家
- 9.实现透明代理。
> 剩余专业路由功能可以由ROS替代服务则跑在NAS系统上避免ALL in Boom
## **选择合适的设备**
无论是传统的无线路由器还是小主机都有成为openwrt路由的潜力。截止到今天已经有20多个品牌小米华硕锐捷华三等30多种架构x86,ipq,bcm,mtd等支持刷入openwrt你可以在这个[网站](https://mao.fan/select)找到符合你预算和其他要求的,能刷机的路由器。
传统家用无线路由器由于主频低,内存小,并不适合作为软路由;而 NAS-软路由一体式 又有 all in boom 的风险因此推荐X86平台作为物理机。当然也可以采用 armbian 平台或是开发板例如网心云老母鸡、树莓派等设备。截至本文撰写时间二手平台上的价格不太利好一台J1900平台的售价往往在200左右而专门的多网口工控机价格在200到1000不等树莓派更是成为了理财产品需要慎重选择。
## **选择合适的系统**
除了openwrt主线外还可以选择
- [LEDE](https://github.com/coolsnowwolf/lede) 高质量更新快速具有新特性的openwrt分支。
- [iStoreOS](https://github.com/istoreos) iStoreOS是openwrt的一个分支iStoreOS 提供了软件中心iStore以及较美观的界面和docker支持对新手体验较好。
- [ImmortalWrt](https://firmware-selector.immortalwrt.org/) 是一个原版openwrt的分支中文优化好更新也勤快内置镜像源可以直连下载&更新。
## **如何得到一个openwrt系统**
- 可以在恩山论坛上使用他人编译好的现成的镜像,如"高大全","精品小包"等等,但存在一定风险;
- 可以使用[官方固件](https://downloads.openwrt.org/)下载得到一个最小化的系统,再一步步添加自己要用的包;
- 可以使用[Openwrt 在线编译](https://firmware-selector.openwrt.org/)或[Openwrt.ai](https://openwrt.ai/?target=x86%2F64&id=generic)在线编译
一个固件;
- 可以使用GitHub action 云编译一个固件;
- 可以在本地linux环境中进行编译。
## **X86平台安装准备**
- 一个U盘与一台双网口物理机
- openwrt 的编译包,官方网站:[OpenWrt Firmware Selector](https://firmware-selector.openwrt.org/?version=24.10.0-rc2&target=ipq40xx%2Fgeneric&id=glinet_gl-a1300)
- 或者用由 eSir 大佬编译的[懒人包](https://drive.google.com/drive/folders/1uRXg_krKHPrQneI3F2GNcSVRoCgkqESr)
- PE 启动盘,这里推荐[HotPE](https://github.com/VirtualHotBar/HotPEToolBox)
- [img 写盘工具](https://www.roadkil.net/program.php?ProgramID=12#google_vignette)
## **X86平台安装流程**
1.进入PE环境
- 打开微PE将其安装进U盘中安装完成后将 img 工具和 openwrt 包一起放进去;
- 将U盘插入目标主机进入 BIOS-boot 设置U盘优先启动各主板进入 BIOS 的按键不同,不确定的话建议都试一遍。
2.格式化硬盘并写盘
- 进入PE环境中可以看到存在名为“分区助手”的软件打开它并将目标主机硬盘格式化注意不要分区不要分区不要设置文件系统否则后续可能无法编译点击左上角提交并执行
- 打开img写盘工具将openwrt包写入硬盘注意不要写进U盘里。
3.进入配置界面
- 重启系统并快速拔出U盘避免重新进入PE这时系统开始运行了。注意Esir固件是不跑码的无需担心。- 一个U盘与一台双网口物理机
- 当看到 `please press Enter to activate this console`这个提示的时候系统就安装完毕了。可使用 passwd 命令设置密码。软路由将自动获取IP地址随后我们在浏览器中打开该地址即可看到 Lucl 界面。
> 硬盘空间有一部分没有被格式化可以手动格式化为ext4并挂载。
> 注意初始IP往往是192.168.1.1,如果和光猫冲突需要在网络-接口中更改。
> 基本系统主题比较简陋可以使用luci-theme-argon。
> 刷错主题无法打开luci通过 SSH 登录路由器,切换到另一个已知正常的主题(例如 Bootstrap
``uci set luci.main.mediaurlbase='/luci-static/bootstrap'
uci commit luci
/etc/init.d/uhttpd restart``
然后重新访问 Web 界面,查看是否恢复正常。
## **X86平台本地编译完整openwrt**
- **系统版本Debian 11 或者 Ubuntu LTS**
- **网络要求:科学上网环境,配置推荐 2H4G 以上**
- **编译依赖**
```
安装依赖
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache clang cmake cpio curl device-tree-compiler flex gawk gcc-multilib g++-multilib gettext \
genisoimage git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev \
libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev \
libreadline-dev libssl-dev libtool llvm lrzsz msmtp ninja-build p7zip p7zip-full patch pkgconf \
python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion \
swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
```
- **清理**
```
sudo apt autoremove --purge
sudo apt clean
```
- **新建一个用户,用于编译固件(可选)**
```
useradd -m openwrt # 新建一个名为 openwrt 的用户
```
> 不可以使用Root用户进行编译!!
- **修改用户默认的 Shell**
```
apt install -y sudo
usermod -s /bin/bash openwrt
```
- **切换用户**
```
su openwrt
cd ~
```
- **拉取源码,这里用的是 LEDE 分支源码:**
```
git clone https://github.com/coolsnowwolf/lede
cd lede
```
### 目录说明
- buildroot: OpenWrt 的核心目录,包含构建系统相关的文件。
- `feeds.conf.default`:定义软件包源的配置文件。
- `files/`:存放自定义文件,用于覆盖默认的 root 文件系统。
- target: 包含目标设备架构的配置和构建信息。
- `linux/`:包含与 Linux 内核相关的代码和配置。
- `generic/`:通用配置文件。
- `platform/`:针对具体设备平台的特定配置。
- package: 包含所有 OpenWrt 的软件包。
- `base/`:基本功能相关的软件包(如 BusyBox、opkg
- `kernel/`:与内核相关的补丁或模块。
- `network/`:网络工具和协议(如 DHCP、DNS
- `utils/`:各种实用工具(如编解码器、文件工具)。
- config: 存放默认配置文件,例如 `Config.in`,用于定义菜单项。
- scripts: 构建过程中使用的辅助脚本(如生成补丁、编译镜像)。
- toolchain: 构建工具链所需的文件,如编译器、链接器。
- tools: 一些构建系统依赖的额外工具(如 `autoconf`、`zlib`)。
- include: 存放 Makefile 的通用模板和其他全局定义文件。
- feeds: 包含通过 `feeds.conf` 配置的外部软件包源。
- documentation: 包含与 OpenWrt 项目相关的文档,如构建指南和开发文档。
- **添加软件源,可自行添加软件源至 feeds.conf.default 文件也可以直接git添加需要的软件到lede目录下**
```
vim feeds.conf.default
```
```
常用源
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
src-git haibo https://github.com/haiibo/openwrt-packages
src-git liuran001 https://github.com/liuran001/openwrt-packages
```
- **单独添加**(在更新并安装插件之前执行)例如:
```
git clone https://github.com/chenmozhijin/turboacc.git
```
- **更新并安装插件**
```
./scripts/feeds clean
./scripts/feeds update -a
./scripts/feeds install -a
```
- **自定义配置**
**修改默认IP为 10.0.0.2**
```
sed -i 's/192.168.1.1/192.168.2.1/g' package/base-files/files/bin/config_generate
```
**修改默认主机名**
```
sed -i '/uci commit system/i\uci set system.@system[0].hostname='OpenWrt'' package/lean/default-settings/files/zzz-default-settings
```
**加入编译者信息**
```
sed -i "s/OpenWrt /smith build $(TZ=UTC-8 date "+%Y.%m.%d") @ OpenWrt /g" package/lean/default-settings/files/zzz-default-settings
```
**修改默认主题**
```
sed -i "s/luci-theme-bootstrap/luci-theme-argon/g" feeds/luci/collections/luci/Makefile
```
执行 **make menuconfig** 命令进入编译菜单。
**编译配置菜单说明(部分)**
Target System (Broadcom BCM27xx) #选择处理器架构
Subtarget (BCM2711 boards (64 bit)) #选择处理器
Target Profile (Raspberry Pi 4B/400/4CM (64bit)) #预制配置文件
Target Images #固件映像设置
ramdisk # 内存盘, 硬件内存充裕的话可以打开,有效提升性能
Compression # 压缩等级(none表示不压缩)
Root filesystem archives #根文件系统存档类型
cpio.gz
tar.gz
Root filesystem images #根文件系统格式
ext4 #适用于大容量闪存,易于修改分区大小,没有恢复出厂设置的功能
squashfs #适用于小容量闪存,不可修改分区大小,有恢复出厂设置的功能
Gzip images #Gzip存档
Image Options
Kernel partition size #内核分区大小建议64M到256M足够了
Root filesystem partition size #跟文件系统分区大小,根据闪存大小自行设定
Make /var persistent #持久化/var(开启后重启软路由/var下内容会保留)
Enable experimental features by default #默认启用实验性功能
Global build settings #全局编译设置
Advanced configuration options (for developers) #高级选项(仅供开发者)
Build the OpenWrt Image Builder #编译OpenWrt镜像编译器
Build the OpenWrt SDK #编译OpenWrt SDK
Package the OpenWrt-based Toolchain #打包OpenWrt工具链
Image configuration #镜像选项
Base system #基本组件
Administration #管理员工具
Boot Loaders #引导程序
Development #开发者工具
Extra packages #额外包
Firmware #固件工具
Fonts #字体
Kernel modules #内核模块
Languages #额外的语言(Python3,PHP,NodeJS等)
Libraries #系统库
LuCI #LuCI插件(一般只需修改应用和主题)
Collections #合集
Modules #模块
Applications #应用程序
Themes #主题
Protocols #协议支持
Libraries #运行库
default-settings # 默认选项(自动配置语言包)
Mail #邮件
Multimedia #多媒体
Network #网络相关
Sound #音频
Utilities #各类实用软件(比如VIM)
Xorg
- **菜单选项说明**
**选择 CPU 类型**
```
Target System (x86) --> # 软路由选择 x86硬路由根据型号厂家自行选择
Subtarget (x86_64) --> # CPU 子选项
Target Profile (Generic x86/64) --> # 厂家具体型号
```
**设置镜像编译的格式squashfsext4**
```
Target Images --> # 默认 squashfs
```
**添加较多插件时为了避免空间不足建议修改下面两项默认大小x86/64**
```
Target Images --> (16) Kernel partition size (in MB) # 默认是16建议修改为256
```
**开启 IPv6 支持**
```
Extra packages --> ipv6helper选定这个后下面几项会自动选择
```
**开启适用于 VMware 的 VMware Tools**
```
Utilities --> open-vm-tools
Utilities --> open-vm-tools-fuse
```
**选择插件**
```
LuCI --> Applications # 根据需要选择,* 代表编入固件M 表示编译成模块或者IPK包为空表示不编译
```
**选择主题**
```
LuCI --> Themes # 选择喜欢的主题,可以选多个
```
配置完成后使用编译菜单底部的 Save 保存,然后退出菜单 Exit开始下载软件包
- **预下载编译所需的软件包**
```
make download -j8
```
- **检查文件完整性**
```
find dl -size -1024c -exec ls -l {} \;
```
检查文件完整性命令可以列出下载不完整的文件小于1k的文件属于下载不完整如果存在则用下面的命令删除然后重新下载编译所需的软件包再次检查.确认所有文件完整可大大提高编译成功率,避免浪费时间
```
find dl -size -1024c -exec rm -f {} \;
```
最后编译固件,编译完成后输出路径是 **bin/targets**,默认密码是 **password**.
- **编译固件(-j 后面是线程数,首次编译推荐用单线程)**
```
make V=s -j1
```
- **二次编译**
拉取最新 OpenWrt 源码和更新 feeds 源中的软件包源码
```
cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
```
清除旧的编译产物和目录(可选)
```
make clean
```
- 源码有大规模更新或者内核更新后执行,以保证编译质量;此操作会删除 /bin 和 /build_dir 目录中的文件
```
make dirclean
```
> 更换架构编译前必须执行
> 此操作会删除 /bin 和 /build_dir 目录的中的文件make clean以及 /staging_dir、/toolchain、/tmp 和 /logs 中的文件
同首次编译,多线程编译失败后自动进入单线程编译,失败则输出详细日志
```
make defconfig
make download -j8
find dl -size -1024c -exec ls -l {} \;
make -j$(nproc) || make -j1 || make -j1 V=s
```
## 如果需要重新配置
```
rm -rf ./tmp && rm -rf .config # 清除临时文件和编译配置文件
make menuconfig
make download -j8
find dl -size -1024c -exec ls -l {} \;
make -j$(nproc) || make -j1 || make -j1 V=s
```
## Arm平台安装OpenWrt
相比X86平台arm架构的设备兼容性不高不能随便找一个包就能安装。以下是一般步骤
- 首先得知道你的设备的CPU比如ipq40XX系列然后在对应的[仓库](https://archive.openwrt.org/releases/23.05.4/targets/)查看并下载包体。
- 当然也可以在[这里](https://firmware-selector.openwrt.org/)直接下载相关型号对应的固件,其中 Sysupgrade 映像是用来更新现有运行 OpenWrt 的设备,使用 Factory 映像在首次刷机时刷入。
- 随后开启Telnet或者SSH或者TTL串口连接到路由器将对应的Uboot刷入如果没有适配的包就无法刷openwrt。
- 通过Uboot的网络界面刷入Factory包随后就可以在后台如192.168.1.1进入openwrt的管理界面。
## 在ubuntu上单独编译openwrt的ipk包
这里以ubuntu环境为例我们假设你有一台虚拟机或者WSL。
> ``注意编译不能使用Root用户``
**随后安装编译依赖的各个包:**
```
sudo apt install python3-distutils-extra git gawk libncurses-dev build-essential binutils bzip2 diff find flex gawk gcc-6+ getopt grep install libc-dev libz-dev make4.1+ perl python3.7+ rsync subversion unzip which
sudo apt install -y build-essential python3-dev python3-setuptools swig \
libmesa-dev libwayland-dev libgraphene-dev \
gawk wget git-core diffstat unzip texinfo gcc-multilib \
libncurses5-dev libncursesw5-dev zlib1g-dev \
libssl-dev flex bison gperf libxml-parser-perl \
python-is-python3 python3-pip gettext
sudo apt install -y swig
sudo apt install -y mesa-common-dev libwayland-dev libgraphene-1.0-dev
```
随后下载我们**刷入openwrt的对应的SDK包**,如
```
git clone https://github.com/immortalwrt/immortalwrt.git
```
**下载和安装仓库信息**
```
./scripts/feeds update -a
./scripts/feeds install -a
```
**下载并选中我们需要编译的包,这里以inyn为例**
```
git clone https://github.com/diredocks/openwrt-inyn.git ./package/inyn
make menuconfig
```
在 `menuconfig` 的命令行界面中,选中 `Network -> inyn` 将其首部调整为 `<M>` 表示按需编译,最后选中 `Save -> OK -> Exit` 保存配置信息,然后 `Exit` 退出配置。
**编译 inyn 软件包**
```
make package/inyn/compile V=s
## 如果不行则需要先编译工具链,即为 make j=4 j为CPU核数
```
## Github Actions 编译OpenWrt
Github为我们提供了免费的E5主机用来编译。
- 首先Fork[这个仓库](https://github.com/hugcabbage/shared-lede),可以看到有许多现成的配置,在**顶栏actions里面可以直接启动一个Workflow**来编译。
- 大体架构是选择**源码 -- 机型 -- 版本 -- 插件/主题 -- 配置IP/密码/Hostname/编译者)**由一个config文件管理这个文件在前面也提到过可以在本地生成并上传
- 想要什么插件可以直接git clone过来原仓库如果你想要添加其他架构和设备这里**使用templet里面的init.toml来创建**,按照类似的格式填好;
- 在actions里面运行produce注意这需要**GitHub Personal Access Token (PAT)**;如果没有,必须先添加:
- 打开 GitHub进入[GitHub Developer Settings](https://github.com/settings/tokens)点击 “Generate new token (classic)”,**勾选所需权限**(最关键的是 repo 和 workflow✅ repo所有子权限✅ workflow✅ read:packages **Token 过期时间**:选择 “No expiration”不过期否则过期后需要重新生成。**点击** “Generate token”
**复制 Token**(只显示一次,一定要保存好!)
- 然后添加 **PRODUCE_DEVICE** 到 **GitHub Secrets**
首先进入你的 GitHub 仓库依次进入Settings设置-
Secrets and variables-Actions-New repository secret
名称为PRODUCE_DEVICE值为粘贴刚刚复制的 GitHub Token点击 “Add secret” 完成添加。
- 随后在actions里面运行produce完成后即可出现新架构的编译按钮.
## 常用命令:
```
# 更新软件列表
opkg update
# 更新所有 LUCI 插件
opkg list-upgradable | grep luci- | cut -f 1 -d ' ' | xargs opkg upgrade
# 如果要更新所有软件,包括 OpenWRT 内核、固件等
opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade
```
> 新版本的openwrt24.10已经改用APK包管理器。
## 🔗
- [Openwrt wiki](https://openwrt.org/zh/docs/start)
- [OpenWrt在线定制编译](https://openwrt.ai/?target=ipq807x%2Fgeneric&id=xiaomi_ax3600)
- [openwrt luci 页面无法访问 问题排查](https://www.cnblogs.com/tfel-ypoc/p/17226064.html)
- [超详细多图简单OpenWRT 设置IPV6配置](https://post.smzdm.com/p/axz6369w/)
- [保姆级-光猫改桥接-路由拨号-openwrt端口转发](https://blog.csdn.net/weixin_44548582/article/details/121064734)

87
content/learn-docker-1.md Normal file
View File

@ -0,0 +1,87 @@
+++
title = "Docker学习笔记(一)"
date = 2024-03-25
[taxonomies]
tags = ["学习笔记"]
+++
前言 Docker 是一个开源平台,通过将应用程序隔离到轻量级、可移植的容器中,自动执行应用程序的部署、扩展和管理。容器是独立的可执行单元,它封装了应用程序在各种环境中一致运行所需的所有必要依赖项、库和配置文件。
<!-- more -->
## **什么是容器?**
容器是轻量级、可移植和隔离的软件环境,允许开发人员跨不同平台一致地运行和打包应用程序及其依赖项。它们有助于简化应用程序开发、部署和管理流程,同时确保应用程序始终如一地运行,而不管底层基础架构如何。
## **容器是如何工作的?**
与传统的虚拟化不同,传统的虚拟化使用硬件资源模拟完整的操作系统,容器共享主机的操作系统内核,并利用轻量级虚拟化技术来创建隔离的进程。这种方法有几个好处,包括:
- 效率:容器的开销较小,可以共享公共库和可执行文件,与虚拟机 VM 相比,可以在单个主机上运行更多容器。
- 可移植性:容器封装了应用程序及其依赖项,因此可以轻松地在不同的环境和平台上一致地移动和运行它们。
- 快速启动:由于容器不需要启动完整的操作系统,因此它们的启动和关闭速度比 VM 快得多。
- 一致性:容器为应用程序的开发、测试和生产阶段提供了一致的环境,从而减少了“它在我的机器上工作”的问题。
## **容器和 Docker**
Docker 是一个简化创建、部署和管理容器过程的平台。它为开发人员和管理员提供了一组工具和 API 来管理容器化应用程序。使用 Docker您可以将应用程序代码、库和依赖项构建并打包到容器映像中该映像可以在任何支持 Docker 的环境中一致地分发和运行。
## **对容器的需求**
在软件开发和部署领域,一致性和效率至关重要。在容器出现之前,开发人员在跨不同环境部署应用程序时经常面临挑战,包括:
- 不一致的环境:开发人员通常在不同的环境中工作,与生产服务器相比,这些环境可能具有不同的配置和库。这会导致部署应用程序时出现兼容性问题。
- 资源利用效率低下:虚拟机 VM 被广泛用于克服环境不一致的问题。但是VM 需要为每个应用程序运行整个操作系统,从而使资源利用率低效。
- 流程缓慢和可伸缩性问题:传统的部署方法具有较慢的上市时间和扩展困难,这阻碍了软件更新的快速交付。
## **容器如何应对这些挑战:**
- 一致的环境:容器通过将应用程序及其依赖项、配置和库捆绑到单个容器中来解决环境不一致问题。这保证了应用程序在不同环境中平稳运行。
- 高效利用资源:与虚拟机不同,容器共享底层系统资源和操作系统内核,这使得它们轻量级且高效。容器旨在使用更少的资源并更快地启动,从而提高资源利用率。
- 更快的流程和可扩展性:容器可以轻松创建、销毁和替换,从而加快开发和部署周期。由于可以在不消耗大量资源的情况下部署多个容器,因此扩展应用程序变得更加容易。
总体而言,对于希望快速响应市场变化、提高资源效率并确保可靠和一致的软件交付的组织来说,容器已成为必不可少的工具。它们彻底改变了现代软件开发实践,并在部署和应用程序管理领域产生了持久的影响。
## **裸机、虚拟机、容器**
- 裸机
裸机是一个术语,用于描述直接在硬件上运行的计算机,无需任何虚拟化。这是运行应用程序的高性能方式,但也是最不灵活的方式。每台服务器只能运行一个应用程序,并且不能轻松地将应用程序移动到另一台服务器。
- 虚拟机
虚拟机 VM 是一种在单个服务器上运行多个应用程序的方法。每个 VM 都运行在虚拟机监控程序之上,虚拟机监控程序是模拟计算机硬件的软件。虚拟机监控程序允许您在单个服务器上运行多个操作系统,并且它还在不同 VM 上运行的应用程序之间提供隔离。
- 容器
容器是一种在单个服务器上运行多个应用程序的方法,而不会产生虚拟机管理程序的开销。每个容器都运行在容器引擎之上,容器引擎是一种模拟计算机操作系统的软件。容器引擎允许您在单个服务器上运行多个应用程序,它还提供在不同容器上运行的应用程序之间的隔离。
**Docker 与 OCI**
开放容器计划 OCI 是 Linux 基金会的一个项目,旨在为容器格式和运行时创建行业标准。其主要目标是通过定义的技术规范确保容器环境的兼容性和互操作性。
Docker 是 OCI 的创始成员之一在制定容器格式和运行时标准方面发挥了关键作用。Docker 最初开发了容器运行时Docker 引擎和映像格式Docker 映像),作为 OCI 规范的基础。
**OCI 规范**
OCI 有两个主要规范:
- 运行时规范 runtime-spec它定义了通过隔离技术如容器引擎执行容器的规范。Docker 构建的容器运行时称为“containerd”指导了 OCI 运行时规范的开发。
- 镜像规范 image-spec它定义容器镜像格式用于描述容器的内容并可由兼容的运行时运行。Docker 的初始映像格式促成了 OCI 映像规范的创建。
## **Docker 和 OCI 之间的兼容性**
Docker 始终致力于支持 OCI 规范,并且自参与 OCI 以来,不断更新其软件以符合 OCI 标准。Docker 的 containerd 运行时和映像格式与 OCI 规范完全兼容,使 Docker 容器能够由其他符合 OCI 标准的容器运行时运行,反之亦然。
总之Docker 和 Open Container Initiative 共同致力于维护容器行业的标准化和兼容性。Docker 在 OCI 规范的制定中发挥了重要作用,确保容器生态系统保持健康、可互操作,并可供整个行业的广泛用户和平台访问。

103
content/learn-docker-2.md Normal file
View File

@ -0,0 +1,103 @@
+++
title = "Docker学习笔记(二)"
date = 2024-03-26
[taxonomies]
tags = ["学习笔记"]
+++
前言 了解支持 Docker 的核心技术将有助于更深入地了解 Docker 的工作原理,并更有效地使用该平台。
<!-- more -->
## **Linux 容器 LXC**
Linux 容器 LXC 是 Docker 的基础。LXC 是一种轻量级虚拟化解决方案,它允许多个隔离的 Linux 系统在单个主机上运行而无需成熟的虚拟机管理程序。LXC 以安全和优化的方式有效地隔离应用程序及其依赖项。
## **控制组 cgroups**
控制组 cgroups 是一项 Linux 内核功能,允许将 CPU、内存和 I/O 等资源分配给一组进程并对其进行管理。Docker 利用 cgroups 来限制容器使用的资源,并确保一个容器不会垄断主机系统的资源。
## **联合文件系统 UnionFS**
UnionFS 是一种文件系统服务允许在单个统一视图中叠加多个文件系统。Docker 使用 UnionFS 为镜像和容器创建分层方法,从而实现更好的通用文件共享和更快的容器创建。
## **命名空间**
命名空间是 Docker 用于在容器之间提供隔离的核心技术之一。在本节中,我们将简要讨论什么是命名空间以及它们是如何工作的。
在 Linux 内核中,命名空间是一种允许隔离各种系统资源的功能,使进程及其子进程能够查看与其他进程分开的系统子集。命名空间有助于创建抽象层,以使容器化进程彼此分离并与主机系统分离。
Linux 中有几种类型的命名空间,包括:
- PID进程 ID隔离进程 ID 号空间,这意味着容器中的进程只能看到自己的进程,而看不到主机或其他容器中的进程。
- 网络 NET为每个容器提供单独的网络堆栈视图包括其自己的网络接口、路由表和防火墙规则。
- 挂载 MNT隔离文件系统挂载点使每个容器都有自己的根文件系统并且挂载的资源仅显示在该容器中。
- UTSUNIX 分时系统):允许每个容器拥有自己的主机名和域名,与其他容器和主机系统分开。
- 用户 USER在容器和主机之间映射用户和组标识符以便可以为容器中的资源设置不同的权限。
- IPC进程间通信允许或限制不同容器中进程之间的通信。
## **Docker如何使用命名空间**
Docker 使用命名空间为容器创建隔离环境。启动容器时Docker 会为该容器创建一组新的命名空间。这些命名空间仅适用于容器内,因此在容器内运行的任何进程都可以访问与其他容器以及主机系统隔离的系统资源子集。
Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。当用 docker run 启动一个容器时,在后台 Docker 为容器创建了一个独立的命名空间和控制组集合。
命名空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用。
每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的 sockets 或接口。不过,如果主机系统上做了相应的设置,容器可以像跟主机交互一样的和其他容器交互。当指定公共端口或使用 links 来连接 2 个容器时,容器就可以相互通信了(可以根据配置来限制通信的策略)。
从网络架构的角度来看,所有的容器通过本地主机的网桥接口相互通信,就像物理机器通过物理交换机通信一样。
那么,内核中实现命名空间和私有网络的代码是否足够成熟?
内核命名空间从 2.6.15 版本2008 年 7 月发布)之后被引入,数年间,这些机制的可靠性在诸多大型生产系统中被实践验证。
实际上,命名空间的想法和设计提出的时间要更早,最初是为了在内核中引入一种机制来实现 OpenVZ 的特性。 而 OpenVZ 项目早在 2005 年就发布了,其设计和实现都已经十分成熟。
通过利用命名空间Docker 确保容器是真正可移植的,并且可以在任何系统上运行,而不会受到同一主机上运行的其他进程或容器的冲突或干扰。
## **控制组**
cgroups 或控制组是一项 Linux 内核功能,负责实现资源的审计和限制。
它提供了很多有用的特性以及确保各个容器可以公平地分享主机的内存、CPU、磁盘 IO 等资源;当然,更重要的是,控制组确保了当容器内的资源使用产生压力时不会连累主机系统。
尽管控制组不负责隔离容器之间相互访问、处理数据和进程它在防止拒绝服务DDOS攻击方面是必不可少的。尤其是在多用户的平台比如公有或私有的 PaaS控制组十分重要。例如当某些应用程序表现异常的时候可以保证一致地正常运行和性能。
控制组机制始于 2006 年,内核从 2.6.24 版本开始被引入。
- 资源隔离
cgroups 有助于将每个容器限制在一组特定的资源中,从而确保多个容器之间公平共享系统资源。这样可以更好地隔离不同容器,因此行为异常的容器不会消耗所有可用资源,从而对其他容器产生负面影响。
- 限制资源
使用 cgroups可以对容器使用的各种系统资源如 CPU、内存和 I/O设置限制。这有助于防止单个容器消耗过多资源并导致其他容器或主机系统的性能问题。
- 确定容器的优先级
通过分配不同的资源份额cgroups 允许您为某些容器提供优先级或优先级。在某些容器比其他容器更关键的情况下,或者在资源争用高的情况下,这可能很有用。
- Monitoring 监测
cGroups 还提供用于监视单个容器的资源使用情况的机制,这有助于深入了解容器性能并识别潜在的资源瓶颈。
## **Union Filesystems 联合文件系统**
联合文件系统,也称为 UnionFS在 Docker 的整体功能中起着至关重要的作用。联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承基于基础镜像没有父镜像可以制作各种具体的应用镜像。它是一种独特的文件系统类型它通过覆盖多个目录来创建虚拟的分层文件结构。UnionFS 无需修改原始文件系统或合并目录,而是支持将多个目录同时挂载到单个挂载点上,同时保持其内容独立。此功能在 Docker 的上下文中特别有用,因为它允许我们通过最小化重复和减小容器映像大小来管理和优化存储性能。
以下是联合文件系统的一些基本特性:
- 分层结构UnionFS 构建了一个分层结构,该结构由多个只读层和一个顶部可写层组成。此结构通过仅更新可写层来有效处理更改,而只读层保留原始数据。
- Copy-on-WriteCOW 机制是 UnionFS 不可或缺的功能。如果容器对现有文件进行更改,系统将在可写层中创建该文件的副本,而只读层中的原始文件保持不变。此过程将修改限制在最顶层,确保快速且资源节约的操作。
- 资源共享:联合文件系统允许多个容器在单独运行时共享公共基础层。此功能可防止资源重复并节省大量存储空间。
- 快速容器初始化:联合文件系统只需在现有只读层上创建新的可写层,就可以立即创建新容器。这种快速初始化减少了重复文件操作的开销,最终提高了性能。
## **Docker 中流行的联合文件系统**
Docker 支持多个联合文件系统,便于构建和管理容器。一些流行的选项包括:
- AUFS高级多层统一文件系统AUFS 被广泛用作 Docker 存储驱动程序,可实现多层的高效管理。
- OverlayFSOverlay FilesystemOverlayFS 是 Docker 支持的另一个联合文件系统。与 AUFS 相比,它使用简化的方法来创建和管理覆盖目录。
- BtrfsB-Tree 文件系统Btrfs 是一种现代文件系统,除了快照和校验和等高级存储功能外,还提供与联合文件系统的兼容性。
- ZFSZ 文件系统ZFS 是一个高容量且强大的存储平台,它提供联合文件系统功能以及数据保护、压缩和重复数据删除。

174
content/learn-docker-3.md Normal file
View File

@ -0,0 +1,174 @@
+++
title = "Docker学习笔记(三)"
date = 2024-03-27
[taxonomies]
tags = ["学习笔记"]
+++
前言 Docker 是一个平台,可简化在轻量级、可移植容器中构建、打包和部署应用程序的过程。在本节中,我们将介绍 Docker 的基础知识、其组件以及入门所需的关键命令。
<!-- more -->
## **基础知识**
Docker 是一个平台,可简化在轻量级、可移植容器中构建、打包和部署应用程序的过程。在本节中,我们将介绍 Docker 的基础知识、其组件以及入门所需的关键命令。
## **什么是容器?**
容器是一个轻量级、独立且可执行的软件包,其中包含运行应用程序所需的所有依赖项(库、二进制文件和配置文件)。容器将应用程序与其环境隔离开来,确保它们在不同系统中一致地工作。
## **Docker 生态系统中有三个关键组件:**
- Dockerfile包含用于构建 Docker 映像的指令(命令)的文本文件。
- Docker 映像:从 Dockerfile 创建的容器快照。映像存储在注册表(如 Docker Hub可以拉取或推送到注册表。
- Docker 容器Docker 映像的运行实例。
## **安装Docker**
**安装基础工具**
```
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
```
**安装docker的gpg key**
```
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```
**安装docker源**
```
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
上面命令中的 lsb_release -cs 返回 bullseye 也就是debian11的代号。
**安装docker**
```
apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
sudo systemctl start docker
```
至此安装完成。
在debian系的Linux发行版上docker会开机启动启动。
如果平时使用非root账户又不想每次执行docker命令之前都加上sudo参考docker的 文档 可以添加 docker 并将非root账户加入到该组中。下面的命令创建 docker 组并将当前用户加入 docker 执行完成之后重新登陆生效
```
sudo groupadd docker
sudo usermod -aG docker $USER
```
**使用 Docker 存储库安装**
我建议使用此方法的主要原因是您可以轻松升级,因为存储库可以轻松更新!
首先,使用以下命令安装此方法的先决条件:
```
sudo apt update && sudo apt install ca-certificates curl gnupg
```
现在,让我们使用以下命令创建一个目录来存储密钥环:
```
sudo install -m 0755 -d /etc/apt/keyrings
```
接下来,使用给定的命令下载 GPG 密钥并将其存储在  /etc/apt/keyrings/etc/apt/keyrings  目录中
```
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```
完成后,使用 chmod 命令更改 docker.gpg 文件的权限:
```
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```
最后,使用以下命令为 Docker 设置存储库:
```
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
上述命令中每行末尾的额外  \  只是添加新行的一种方式,以便您可以轻松查看整个命令。就是这样!
现在,您可以使用以下命令更新存储库索引并安装 Docker
```
sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
要验证 Docker 安装,您可以安装 hello-world 映像:
```
sudo docker run hello-world
```
hello-world docker 镜像很小,仅用于检查 Docker 是否运行正常。
## **使用 Docker 而不使用 sudo**
如果您注意到,在运行 hello-world 映像时,我使用了 sudo。
这可能不太方便。那么如何将其配置为不必使用 sudo 呢?
首先使用 groupadd 命令创建一个 docker 组:
```
sudo groupadd docker
```
现在将用户添加到组docker
```
sudo usermod -aG docker $USER
```
现在从终端注销并重新登录以使更改生效。
如果您在虚拟机中安装 Docker需要重新启动才能使您所做的更改生效。
让我们通过运行 hello-world 图像来测试它:
```
docker run hello-world
```
正如您所看到的,我无需使用 sudo 即可获得相同的结果。
## **卸载 Docker**
首先,使用以下命令停止 docker 服务:
```
sudo systemctl stop docker
```
然后按以下方式使用 apt purge 命令从系统中删除 Docker
```
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
如果您打算进行全新安装或者不想拥有任何以前的数据,那么您可以使用 rm 命令删除 Docker 文件:
```
sudo rm -rf /var/lib/docker
```
```
sudo rm -rf /var/lib/containerd
```
就是这样! Docker 已成功删除。
## **Docker Commands Docker 命令**
```
docker pull <image> 从注册表(如 Docker Hub下载映像。
docker build -t <image_name> <path> 从 Dockerfile 构建映像,其中 <path> 是包含 Dockerfile 的目录。
docker image ls 列出本地计算机上可用的所有映像。
docker run -d -p <host_port>:<container_port> --name <container_name> <image>:从映像运行容器,将主机端口映射到容器端口。
docker container ls 列出所有正在运行的容器。
docker container stop <container> 停止正在运行的容器。
docker container rm <container> 移除停止的容器。
docker image rm <image> 从本地计算机中删除映像。
```

78
content/learn-docker-4.md Normal file
View File

@ -0,0 +1,78 @@
+++
title = "Docker学习笔记(四)"
date = 2024-03-28
[taxonomies]
tags = ["学习笔记"]
+++
前言 Docker 使您能够运行与主机操作系统分离的隔离代码段包括应用程序及其依赖项的容器。默认情况下容器是临时的这意味着容器中存储的任何数据一旦终止就会丢失。为了克服这个问题并跨容器生命周期保留数据Docker 提供了多种数据持久化方法。
<!-- more -->
## **Docker 中的数据持久化**
在本节中,我们将介绍:
- Docker Volumes Docker 卷
- Bind Mounts 绑定挂载
- Docker tmpfs mounts Docker tmpfs 挂载
## **Docker Volumes Docker 卷**
Docker 卷是保存 Docker 容器生成和使用的数据的首选方法。卷是 Docker 用于存储文件和目录的主机上的一个目录这些文件和目录的寿命可能超过容器的生命周期。Docker 卷可以在容器之间共享,它们提供了各种好处,例如轻松备份和数据迁移。
要创建卷,请使用以下命令:
```
docker volume create volume_name
```
要使用卷,请在 docker run 命令中添加 --volume或 -v标志
```
docker run --volume volume_name:/container/path image_name
```
**在容器中挂载卷**
若要将卷装载到容器,需要在运行容器时使用 -v 或 --mount 标志。下面是一个示例:
Using -v flag: 使用 -v 标志:
```
docker run -d -v my-volume:/data your-image
```
Using --mount flag: 使用 --mount 标志:
```
docker run -d --mount source=my-volume,destination=/data your-image
```
在上面的两个示例中my-volume 是我们之前创建的卷的名称,/data 是容器内将挂载卷的路径。
**在容器之间共享卷**
要在多个容器之间共享卷,只需在多个容器上挂载相同的卷即可。下面介绍如何在运行不同映像的两个容器之间共享 my-volume
```
docker run -d -v my-volume:/data1 image1
docker run -d -v my-volume:/data2 image2
```
在此示例中image1 和 image2 将有权访问存储在 my-volume 中的相同数据。
**Removing a Volume 删除卷**
要删除卷,可以使用 docker volume rm 命令,后跟卷名称:
```
docker volume rm my-volume
```
## **Bind Mounts 绑定挂载**
绑定挂载允许您将主机上的任何目录映射到容器中的目录。此方法在需要修改主机系统上的文件的开发环境中非常有用,并且这些更改应立即在容器中可用。
与卷相比,绑定挂载的功能有限。使用绑定挂载时,主机上的文件或目录将装载到容器中。文件或目录由其在主机上的绝对路径引用。相比之下,当您使用卷时,会在主机上的 Docker 存储目录中创建一个新目录Docker 管理该目录的内容。
文件或目录不需要已存在于 Docker 主机上。如果尚不存在,则按需创建。绑定挂载的性能非常高,但它们依赖于主机的文件系统,该文件系统具有特定的可用目录结构。
要创建绑定挂载,请在 docker run 命令中使用带有 type=bind 的 --mount 标志:
```
docker run --mount type=bind,src=/host/path,dst=/container/path image_name
```
## **Docker tmpfs mounts Docker tmpfs 挂载**
Docker tmpfs 挂载允许您直接在容器的内存中创建临时文件存储。存储在 tmpfs 挂载中的数据快速且安全,但一旦容器终止,数据就会丢失。
要使用 tmpfs 挂载,请在 docker run 命令中添加 --tmpfs 标志:
```
docker run --tmpfs /container/path image_name
```
通过采用这些方法,可以确保跨容器生命周期的数据持久性,从而增强 Docker 容器的实用性和灵活性。请记住选择最适合您的用例的方法,无论是首选的 Docker 卷、方便的绑定挂载,还是快速安全的 tmpfs 挂载。

132
content/learn-docker-5.md Normal file
View File

@ -0,0 +1,132 @@
+++
title = "Docker学习笔记(五)"
date = 2024-03-29
[taxonomies]
tags = ["学习笔记"]
+++
前言 第三方映像是预构建的 Docker 容器映像,可在 Docker Hub 或其他容器注册表上使用。这些映像由个人或组织创建和维护,可用作容器化应用程序的起点。
<!-- more -->
## **查找第三方镜像**
Docker Hub 是最大、最受欢迎的容器镜像注册表,包含官方和社区维护的镜像。您可以根据要使用的名称或技术搜索镜像。
例如:如果你正在寻找 Node.js 映像,你可以在 Docker Hub 上搜索“Node”你会找到官方Node.js映像以及许多其他社区维护的映像。
**在 Dockerfile 中使用映像**
要在 Dockerfile 中使用第三方映像,只需使用 FROM 指令将映像名称设置为基础映像即可。下面是使用官方Node.js镜像的示例
FROM node:14
```
# The rest of your Dockerfile...
```
**注意安全问题**
请记住,第三方映像可能存在安全漏洞或配置错误。在生产中使用镜像之前,请务必验证镜像的来源并检查其信誉。更喜欢使用官方镜像或维护良好的社区镜像。
**维护您的镜像**
使用第三方映像时,必须保持更新,以包含最新的安全更新和依赖项更改。定期检查基础映像中的更新,并相应地重新生成应用程序容器。
## **使用第三方映像:数据库**
在 Docker 容器中运行数据库有助于简化开发过程并简化部署。Docker Hub 为 MySQL、PostgreSQL 和 MongoDB 等流行数据库提供了大量预制映像。
**示例:使用 MySQL 镜像**
要使用 MySQL 数据库,请在 Docker Hub 上搜索官方镜像:
```
docker search mysql
```
找到官方图片,然后拉动它:
```
docker pull mysql
```
现在,您可以运行 MySQL 容器。指定所需的环境变量,例如 MYSQL_ROOT_PASSWORD并选择性地将容器的端口映射到主机
```
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql
```
此命令创建一个名为 some-mysql 的新容器,将 root 密码设置为 my-secret-pw并将主机上的端口 3306 映射到容器上的端口 3306。
**示例:使用 PostgreSQL 镜像**
对于 PostgreSQL请执行与上述步骤类似的步骤。首先搜索官方图片
```
docker search postgres
```
Pull the image: 拉取图像:
```
docker pull postgres
```
运行 PostgreSQL 容器,指定环境变量,例如 POSTGRES_PASSWORD
```
docker run --name some-postgres -e POSTGRES_PASSWORD=my-secret-pw -p 5432:5432 -d postgres
```
## **使用 Docker 的交互式测试环境**
Docker 允许您创建隔离的一次性环境,这些环境可以在完成测试后删除。这使得使用第三方软件、测试不同的依赖项或版本以及快速试验变得更加容易,而不会损坏本地设置。
**使用 Docker 创建交互式测试环境**
为了演示如何设置交互式测试环境,让我们以 Python 编程语言为例。我们将使用 Docker Hub 上提供的公共 Python 映像。
要使用 Python 映像启动交互式测试环境,只需运行以下命令:
```
docker run -it --rm python
```
在这里,-it 标志确保使用 tty 在交互模式下运行容器,而 --rm 标志将在容器停止后将其删除。
现在,您应该位于容器内的交互式 Python shell 中。您可以像往常一样使用 pip 执行任何 Python 命令或安装其他软件包。
```
print("Hello, Docker!")
```
完成交互式会话后,只需键入 exit() 或按 CTRL+D 即可退出容器。容器将按照 --rm 标志的指定自动删除。
**交互式测试环境的更多示例**
可以使用 Docker Hub 上提供的多个第三方映像,并创建各种交互式环境,例如:
Node.js若要启动交互式 Node.js shell可以使用以下命令
```
docker run -it --rm node
```
Ruby要启动交互式 Ruby shell您可以使用以下命令
```
docker run -it --rm ruby
```
MySQL要启动临时 MySQL 实例,您可以使用以下命令:
```
docker run -it --rm --name temp-mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 mysql
```
这将启动一个临时的MySQL服务器该服务器可以通过主机端口3306访问。一旦容器停止它将被移除。
随意探索和测试各种软件,而不必担心损坏本地计算机或安装不必要的依赖项。将 Docker 用于交互式测试环境可以让您在处理各种第三方软件时更高效、更干净地工作。
## **命令行实用程序**
Docker 映像可以包括命令行实用程序或我们可以在容器内运行的独立应用程序。这在使用第三方映像时非常有用,因为我们想要使用的工具已经打包好,无需任何安装或配置即可运行。
**BusyBox**
BusyBox 是一个小型 1-2 Mb 且简单的命令行应用程序,它提供了大量常用的 Unix 实用程序,例如 awk、grep、vi 等。要在 Docker 容器中运行 BusyBox只需拉取映像并使用 Docker 运行它:
```
docker pull busybox
docker run -it busybox /bin/sh
```
进入容器后,您可以开始运行各种 BusyBox 实用程序,就像在常规命令行上一样。
**cURL**
cURL 是一个众所周知的命令行工具,可用于使用各种网络协议传输数据。它通常用于测试 API 或从 Internet 下载文件。若要在 Docker 容器中使用 cURL可以使用 Docker Hub 上提供的官方 cURL 映像:
```
docker pull curlimages/curl
docker run --rm curlimages/curl https://example.com
```
在此示例中,--rm 标志用于在命令运行完毕后删除容器。当您只需要运行单个命令,然后清理容器时,这很有用。
**其他命令行实用程序**
Docker 映像中提供了许多命令行实用程序,包括但不限于:
- wget用于从 Web 上非交互式下载文件的免费实用程序。
- imagemagick用于图像处理和转换的强大软件套件。
- jq轻量级且灵活的命令行 JSON 处理器。
若要使用这些工具中的任何一个,可以在 Docker Hub 上搜索它们,并按照其各自存储库中提供的说明进行操作。

190
content/learn-docker-6.md Normal file
View File

@ -0,0 +1,190 @@
+++
title = "Docker学习笔记(六)"
date = 2024-03-30
[taxonomies]
tags = ["学习笔记"]
+++
前言 容器映像是可执行包,其中包含运行应用程序所需的所有内容:代码、运行时、系统工具、库和设置。通过构建自定义映像,您可以在任何 Docker 支持的平台上无缝部署应用程序及其所有依赖项。
<!-- more -->
## **Dockerfile**
构建容器镜像的关键组件是 Dockerfile。它本质上是一个脚本其中包含有关如何组装 Docker 映像的说明。Dockerfile 中的每条指令都会在映像中创建一个新图层,从而更轻松地跟踪更改并最小化映像大小。下面是 Dockerfile 的简单示例:
```
# Use an official Python runtime as a parent image
FROM python:3.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
```
## **Building an Image 构建映像**
创建 Dockerfile 后,可以使用 docker build 命令生成映像。在包含 Dockerfile 的目录中的终端中执行以下命令:
```
docker build -t your-image-name .
```
此命令告诉 Docker 使用当前目录 . 中的 Dockerfile 构建映像,并为其分配名称 -t your-image-name
检查镜像和图层
成功构建后,可以使用 docker image 命令检查创建的映像:
```
docker image ls
```
要仔细查看镜像的各个图层,请使用 docker history 命令:
```
docker history your-image-name
```
要查看镜像的图层,还可以使用 docker inspect 命令:
```
docker inspect your-image-name
```
要删除镜像,请使用 docker image rm 命令:
```
docker image rm your-image-name
```
将映像推送到注册表
构建映像后,可以将其推送到容器注册表(例如 Docker Hub、Google Container Registry 等),以便轻松分发和部署应用程序。首先,使用您的凭据登录注册表:
```
docker login
```
然后,使用注册表 URL 标记映像:
```
docker tag your-image-name username/repository:tag
```
最后,将标记的映像推送到注册表:
```
docker push username/repository:tag
```
构建容器映像是使用 Docker 的一个关键方面,因为它使你能够轻松打包和部署应用程序。通过创建具有精确指令的 Dockerfile您可以毫不费力地在各种平台上构建和分发映像。
Dockerfile
Dockerfile 是一个文本文档,其中包含 Docker 引擎用于构建映像的指令列表。Dockerfile 中的每条指令都会向映像添加一个新层。Docker 将根据这些说明生成映像然后您可以从映像运行容器。Dockerfile 是基础结构即代码的主要元素之一。
## **常见 Dockerfile 说明**
以下是一些常见的 Dockerfile 指令及其用途的列表:
```
FROM 设置基础映像的开始。必须将 FROM 作为 Dockerfile 中的第一条指令。
WORKDIR 设置任何 RUN、CMD、ENTRYPOINT、COPY 或 ADD 指令的工作目录。如果该目录不存在,则会自动创建该目录。
COPY 将文件或目录从主机复制到容器的文件系统中。
ADD 类似于 COPY但也可以处理远程 URL 并自动解压缩存档。
RUN 在镜像中作为新图层执行命令。
CMD 定义从映像运行容器时要执行的默认命令。
ENTRYPOINT 类似于 CMD但它旨在允许容器作为具有自己参数的可执行文件。
EXPOSE 通知 Docker 容器将在运行时侦听指定的网络端口。
ENV 为容器设置环境变量。
# 若要从 Dockerfile 生成映像,请使用 docker build 命令,指定生成上下文(通常为当前目录)和映像的可选标记。
```
```
docker build -t my-image:tag .
```
运行此命令后Docker 将按顺序执行 Dockerfile 中的每条指令,并为每个指令创建一个新层。
## **高效的层缓存**
构建容器镜像时Docker 会缓存新创建的层。然后,这些图层可以在以后构建其他映像时使用,从而减少构建时间并最大限度地减少带宽使用。但是,要充分利用此缓存机制,您应该了解如何有效地使用图层缓存。
Docker 层缓存的工作原理
Docker 为 Dockerfile 中的每条指令(例如 RUN、COPY、ADD 等)创建一个新层。如果指令自上次生成以来未更改,则 Docker 将重用现有层。
例如,请考虑以下 Dockerfile
```
FROM node:14
WORKDIR /app
COPY package.json /app/
RUN npm install
COPY . /app/
CMD ["npm", "start"]
```
首次构建镜像时Docker 将执行每条指令并为每条指令创建一个新层。如果对应用程序进行一些更改并重新生成映像Docker 将检查更改的指令是否影响任何层。如果任何层均不受更改的影响,则 Docker 将重用缓存的层。
- 高效图层缓存的技巧
- 尽量减少 Dockerfile 中的更改:尽量减少 Dockerfile 中更改的频率,并以最常更改的行显示在底部的方式构建指令。
- 生成上下文优化:使用 .dockerignore 文件从生成上下文中排除可能导致缓存失效的不必要文件。
- 使用较小的基础映像:较小的基础映像可减少提取基础映像所需的时间以及需要缓存的图层数.
- 利用 Docker 的 --cache-from 标志:如果使用的是 CI/CD 管道,则可以指定要用作缓存源的镜像。
- 合并多个指令:在某些情况下,合并指令(例如 RUN有助于最大限度地减少层数从而提高缓存效率。
- 通过遵循这些最佳实践,您可以优化层缓存过程并减少 Docker 映像的构建时间,从而提高开发和部署过程的效率。
## **镜像大小和安全性**
生成容器映像时,必须注意映像大小和安全性。映像的大小会影响容器的生成和部署速度。较小的映像可以加快构建速度,并降低下载映像时的网络开销。安全性至关重要,因为容器映像可能包含可能使应用程序面临风险的漏洞。
Reducing Image Size 减小镜像尺寸
使用适当的基础映像:选择更小、更轻量级的基础映像,该基础映像仅包含应用程序所需的组件。例如,请考虑使用官方镜像的 alpine 变体(如果可用),因为它的尺寸通常要小得多。
FROM node:14-alpine
在单个 RUN 语句中运行多个命令:每个 RUN 语句在镜像中创建一个新图层,该图层会影响镜像大小。使用 && 将多个命令合并为一个 RUN 语句,以最小化图层数并减小最终镜像大小。
```
RUN apt-get update && \
apt-get install -y some-required-package
```
删除同一层中不必要的文件:在映像构建过程中安装包或添加文件时,请删除同一层中的临时或未使用的文件,以减小最终映像大小。
```
RUN apt-get update && \
apt-get install -y some-required-package && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
```
使用多阶段构建:使用多阶段构建创建较小的映像。多阶段构建允许您在 Dockerfile 中使用多个 FROM 语句。每个 FROM 语句在构建过程中创建一个新阶段。您可以使用 COPY --from 语句将文件从一个阶段复制到另一个阶段。
```
FROM node:14-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM node:14-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm install --production
CMD ["npm", "start"]
```
使用 .dockerignore 文件:使用 .dockerignore 文件从生成上下文中排除可能导致缓存失效并增加最终映像大小的不必要文件。
```
node_modules
npm-debug.log
```
## **Enhancing Security 增强安全性**
保持基本映像更新:定期更新您在 Dockerfile 中使用的基本映像,以确保它们包含最新的安全补丁。
- 避免以 root 身份运行容器:运行容器时始终使用非 root 用户,以最大程度地降低潜在风险。在运行应用程序之前创建用户并切换到该用户。
```
RUN addgroup -g 1000 appuser && \
adduser -u 1000 -G appuser -D appuser
USER appuser
```
- 限制 COPY 或 ADD 指令的范围:具体说明要复制到容器映像中的文件或目录。避免使用 COPY . .,因为它可能会无意中包含敏感文件。
```
COPY package*.json ./
COPY src/ src/
```
- 扫描映像中的漏洞:使用 Anchore 或 Clair 等工具扫描映像中的漏洞,并在部署前修复它们。

220
content/learn-docker-7.md Normal file
View File

@ -0,0 +1,220 @@
+++
title = "Docker学习笔记(七)"
date = 2024-03-31
[taxonomies]
tags = ["学习笔记"]
+++
前言 容器镜像仓库是 Docker 容器镜像的集中存储和分发系统。它允许开发人员以这些映像的形式轻松共享和部署应用程序。容器镜像仓库在容器化应用程序的部署中起着至关重要的作用,因为它们提供了一种快速、可靠且安全的方式来跨各种生产环境分发容器映像。
<!-- more -->
## **Container Registries 容器镜像仓库**
以下是当今可用的常用容器镜像仓库列表:
- Docker HubDocker Hub 是公共 Docker 映像的默认注册表,用作在开发人员之间共享和分发映像的平台。
- Google Container Registry GCRGCR 是 Google Cloud Platform 提供的托管、安全且高度可用的注册表,非常适合托管私有容器镜像。
- Amazon Elastic Container Registry ECRAmazon ECR 是由 Amazon Web Services 提供的完全托管的 Docker 容器镜像仓库,为存储、管理和部署容器映像提供高可扩展性和性能。
- Azure 容器镜像仓库 ACRACR 是 Microsoft Azure 提供的托管注册表,提供异地复制、访问控制以及与其他 Azure 服务的集成。
**DockerHub**
DockerHub 是 Docker Inc. 提供的基于云的注册服务。它是默认的公共容器镜像仓库,您可以在其中存储、管理和分发 Docker 映像。DockerHub 使其他用户可以轻松查找和使用您的映像,或者与 Docker 社区共享他们自己的映像。
**DockerHub的功能**
- 公共和私有存储库:将映像存储在每个人都可以访问的公共存储库中,或者选择仅限您的团队或组织访问的私有存储库。
- 自动构建DockerHub 与 GitHub 和 Bitbucket 等常用代码存储库集成,允许您为 Docker 映像设置自动构建。每当您将代码推送到存储库时DockerHub 都会自动创建一个包含最新更改的新映像。
- WebhookDockerHub 允许您配置 Webhook以便在构建或更新映像时通知其他应用程序或服务。
- 组织和团队:通过创建组织和团队来管理对映像和存储库的访问,使协作变得容易。
- 官方镜像DockerHub 为 MongoDB、Node.js、Redis 等流行软件提供了一组精选的官方镜像。这些映像由 Docker Inc. 和上游软件供应商维护,确保它们是最新且安全的。
要开始使用 DockerHub您需要在他们的网站上创建一个免费帐户。注册后您可以创建存储库、管理组织和团队以及浏览可用映像。
当您准备好共享自己的映像时,可以使用 docker 命令行工具将本地映像推送到 DockerHub
```
docker login
docker tag your-image your-username/your-repository:your-tag
docker push your-username/your-repository:your-tag
```
要从 DockerHub 拉取镜像,可以使用 docker pull 命令:
```
docker pull your-username/your-repository:your-tag
```
DockerHub 对于分发和共享 Docker 映像至关重要,使开发人员能够更轻松地部署应用程序和管理容器基础架构。
## **镜像标记最佳实践**
正确标记 Docker 映像对于高效的容器管理和部署至关重要。在本节中,我们将讨论镜像标记的一些最佳实践。
**使用语义版本控制**
标记镜像时建议遵循语义版本控制指南。语义版本控制是一种广受认可的方法可以帮助更好地维护应用程序。Docker 镜像标签应具有以下结构 <major_version>.<minor_version>.<patch>。示例3.2.1。
**标记最新版本**
除了版本号之外Docker 还允许您将映像标记为“最新”。通常的做法是将映像的最新稳定版本标记为“最新”,以便用户无需指定版本号即可快速访问它。但是,在发布新版本时保持此标记更新非常重要。
```
docker build -t your-username/app-name:latest .
```
**具有描述性和一致性**
选择清晰且描述性的标签名称,以传达镜像的用途或与先前版本相比的更改。您的标签还应该在映像和存储库中保持一致,以便更好地组织和易用。
**包括生成和 Git 信息(可选)**
在某些情况下,在镜像标记中包含有关构建和 Git 提交的信息可能会有所帮助。这有助于识别用于生成映像的源代码和环境。示例app-name-1.2.3-b567-d1234efg。
**使用特定于环境和体系结构的标签**
如果应用程序部署在不同的环境生产、暂存、开发或具有多个体系结构amd64、arm64则可以使用指定这些变体的标记。示例your-username/app-name:1.2.3-production-amd64。
**需要时重新标记镜像**
有时,您可能需要在将映像推送到注册表后重新标记映像。例如,如果您已经为应用程序发布了补丁,则可能需要使用与以前版本相同的标记重新标记新的补丁版本。这样可以更顺畅地更新应用程序,并减少需要应用补丁的用户的手动工作。
**使用自动生成和标记工具**
请考虑使用 CI/CD 工具Jenkins、GitLab CI、Travis-CI根据提交、分支或其他规则自动生成映像和标记。这确保了一致性并减少了人工干预导致错误的可能性。
通过遵循这些映像标记的最佳做法,可以确保 Docker 映像的容器注册表更有条理、更可维护且用户友好。
## **Running Containers 运行容器**
要启动一个新容器,我们使用 docker run 命令,后跟映像名称。基本语法如下:
```
docker run [options] IMAGE [COMMAND] [ARG...]
```
例如,要运行官方的 Nginx 镜像,我们将使用:
```
docker run -d -p 8080:80 nginx
```
这将启动一个新容器,并将主机的端口 8080 映射到容器的端口 80。
**Listing Containers 列出容器**
要列出所有正在运行的容器,请使用 docker ps 命令。要查看所有容器(包括已停止的容器),请使用 -a 标志:
```
docker container ls -a
```
**Accessing Containers 访问容器**
要访问正在运行的容器的 shell请使用 docker exec 命令:
```
docker exec -it CONTAINER_ID bash
```
将 CONTAINER_ID 替换为所需容器的 ID 或名称。您可以在 docker ps 的输出中找到它。
**Stopping Containers 停止容器**
若要停止正在运行的容器,请使用 docker stop 命令,后跟容器 ID 或名称:
```
docker container stop CONTAINER_ID
```
**Removing Containers 移除容器**
容器停止后,我们可以使用 docker rm 命令后跟容器 ID 或名称将其删除:
```
docker container rm CONTAINER_ID
```
若要在容器退出时自动删除容器,请在运行容器时添加 --rm 标志:
```
docker run --rm IMAGE
```
**使用 docker run 运行容器**
在本节中,我们将讨论 docker run 命令,该命令使你能够运行 Docker 容器。docker run 命令从指定映像创建一个新容器并启动它。
docker run 命令的基本语法如下:
```
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS这些是命令行标志可用于调整容器的设置如内存约束、端口、环境变量等。
IMAGE容器将运行的 Docker 映像。这可以是 Docker Hub 中的映像,也可以是存储在本地的您自己的映像。
COMMAND这是容器启动时将在容器内执行的命令。如果未指定则将使用映像的默认入口点。
ARG...:这些是可选参数,可以传递给正在执行的命令。
```
**常用选项**
以下是一些常用的 docker run 选项:
```
--name为容器分配名称使其更易于识别和管理。
-p, --publish将容器的端口发布到主机。当您想要从容器外部访问容器内运行的服务时这很有用。
-e, --env在容器内设置环境变量。您可以多次使用此选项来设置多个变量。
-d, --detach在分离模式下运行容器在后台运行容器并且不在控制台中显示日志。
-v, --volume将卷从主机绑定挂载到容器。这有助于持久保存容器生成的数据或在主机和容器之间共享文件。
```
**下面是一些示例命令,可帮助您了解如何使用 docker run**
```
运行 Ubuntu 容器的交互式会话:
docker run -it --name=my-ubuntu ubuntu
运行 Nginx Web 服务器并在主机上发布端口 80
docker run -d --name=my-nginx -p 80:80 nginx
使用自定义环境变量运行 MySQL 容器以配置数据库:
docker run -d --name=my-mysql -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=mydb -p 3306:3306 mysql
使用绑定挂载卷运行容器:
docker run -d --name=my-data -v /path/on/host:/path/in/container some-image
```
## **Docker Compose**
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。它允许您使用名为 docker-compose.yml 的简单 YAML 文件创建、管理和运行应用程序。此文件描述了应用程序的服务、网络和卷,使您只需使用一个命令即可轻松运行和管理容器。
使用 Docker Compose 的一些好处包括:
- 简化的容器管理Docker Compose 允许您在一个地方定义和配置所有服务、网络和卷,使其易于管理和维护。
- 可重现版本:与他人共享您的 docker-compose.yml 文件,以确保他们与您运行相同的环境和服务。
- 版本控制支持:可以对 Docker Compose 文件进行版本控制,以便更轻松地兼容不同版本的 Docker Compose 工具本身。
**创建 Docker Compose 文件:**
若要创建 docker-compose.yml 文件,请首先指定要使用的 Docker Compose 版本,然后指定要定义的服务。下面是基本 docker-compose.yml 文件的示例:
```
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: mysecretpassword
```
在此示例中,我们指定了两个服务:运行最新版本的 nginx 映像的 Web 服务器 web 和运行 MySQL 的数据库服务器 db。Web 服务器将其端口 80 公开给主机,并且数据库服务器为 root 密码设置了环境变量。
**运行 Docker Compose**
要运行 Docker Compose 应用程序,只需导航到包含 docker-compose.yml 文件的目录并运行以下命令:
```
docker-compose up
Docker Compose 将读取文件并按指定顺序启动定义的服务。
```
**其他有用的命令:**
```
docker-compose down停止并删除 docker-compose.yml 文件中定义的所有正在运行的容器、网络和卷。
docker-compose ps列出 docker-compose.yml 文件中定义的所有容器的状态。
docker-compose logs显示 docker-compose.yml 文件中定义的所有容器的日志。
docker-compose build构建 docker-compose.yml 文件中定义的所有映像。
```
## **运行时配置选项**
运行时配置选项允许您在运行 Docker 容器时自定义它们的行为和资源。这些选项有助于管理容器资源、安全性和网络。以下是一些常用运行时配置选项的简要摘要:
**Resource Management 资源管理**
CPU您可以使用 --cpus 和 --cpu-shares 选项限制容器的 CPU 使用率。--cpus 限制容器可以使用的 CPU 内核数,而 --cpu-shares 为容器分配 CPU 时间的相对份额。
```
docker run --cpus=2 --cpu-shares=512 your-image
```
内存:您可以使用 --memory 和 --memory-reservation 选项限制和保留容器的内存。这有助于防止容器消耗过多的系统资源。
```
docker run --memory=1G --memory-reservation=500M your-image
```
**Security 安全**
用户:默认情况下,容器以 root 用户身份运行。为了提高安全性,您可以使用 --user 选项以其他用户或 UID 身份运行容器。
```
docker run --user 1000 your-image
```
只读根文件系统:为防止对容器文件系统进行不必要的更改,可以使用 --read-only 选项将根文件系统挂载为只读。
```
docker run --read-only your-image
```
**Networking 联网**
发布端口:可以使用 --publish或 -p选项将容器的端口发布到主机系统。这允许外部系统访问容器化服务。
```
docker run -p 80:80 your-image
```
主机名和 DNS您可以使用 --hostname 和 --dns 选项自定义容器的主机名和 DNS 设置。
```
docker run --hostname=my-container --dns=8.8.8.8 your-image
```
包含这些运行时配置选项将使你能够有效地管理容器的资源、安全性和网络需求。有关可用运行时配置选项的完整列表,请参阅 Docker 的官方文档。

138
content/learn-docker-8.md Normal file
View File

@ -0,0 +1,138 @@
+++
title = "Docker学习笔记(八)"
date = 2024-04-01
[taxonomies]
tags = ["学习笔记"]
+++
前言 容器安全是实现和管理容器技术(如 Docker的关键方面。它包含一组实践、工具和技术旨在保护容器化应用程序及其运行的基础结构。在本节中我们将讨论一些关键的容器安全注意事项、最佳做法和建议。
<!-- more -->
## **Container Security 容器安全**
**Container Isolation 容器隔离**
隔离对于确保容器化环境的稳健性和安全性至关重要。容器应彼此隔离并与主机系统隔离,以防止未经授权的访问,并在攻击者设法破坏一个容器时减轻潜在的损害。
- 命名空间Docker 使用命名空间技术为运行容器提供隔离环境。命名空间限制容器在更广泛的系统中可以查看和访问的内容,包括进程和网络资源。
- C组控制组 cgroups 用于限制容器消耗的资源,例如 CPU、内存和 I/O。 正确使用 cgroups 有助于防止 DoS 攻击和资源耗尽情况。
**安全模式和做法**
在容器的开发、部署和操作过程中实施最佳实践和特定安全模式对于维护安全环境至关重要。
- 最小权限:应以尽可能低的权限运行容器,仅授予应用程序所需的最低权限。
- 不可变的基础架构:容器应被视为不可变单元 - 一旦构建,就不应更改它们。任何更改都应通过从更新的映像部署新容器来实现。
- 版本控制:映像应进行版本控制,并存储在安全的容器注册表中。
**安全访问控制**
应将访问控制应用于容器管理和容器数据,以保护敏感信息并维护整体安全态势。
- 容器管理:使用基于角色的访问控制 RBAC 来限制对容器管理平台(例如 Kubernetes的访问并确保用户仅具有所需的最低权限。
- 容器数据:对静态数据和传输中的数据进行加密,尤其是在处理敏感信息时。
**容器漏洞管理**
容器容易受到攻击,因为它们的映像依赖于各种包和库。为了降低这些风险,应将漏洞管理包含在容器生命周期中。
- 镜像扫描:使用自动扫描工具识别容器和镜像中的漏洞。这些工具应集成到开发管道中,以便在潜在风险进入生产环境之前发现它们。
- 安全基础映像:使用最小且安全的基础映像创建容器,从而减少攻击面和潜在漏洞。
- 定期更新:使用最新的安全补丁和更新使基础映像和容器保持最新状态。
## **Image Security 镜像安全**
映像安全是在环境中部署 Docker 容器的一个关键方面。确保您使用的镜像是安全的、最新的且没有漏洞至关重要。在本节中,我们将回顾用于保护和管理 Docker 映像的最佳实践和工具。
**使用受信任的映像源**
从公共存储库中提取映像时,请始终使用受信任的官方映像作为容器化应用程序的起点。官方映像由 Docker 审查,并定期更新安全修复程序。可以在 Docker Hub 或其他受信任的注册表上找到这些映像。
Official Images: https://hub.docker.com/explore/
从其他用户下载镜像或创建自己的镜像时,请务必验证源,并检查 Dockerfile 和其他提供的文件,以确保它们遵循最佳实践并且不会引入漏洞。
**使镜像保持最新状态**
持续监控您的镜像并定期更新它们。这有助于最大程度地减少已知漏洞的风险,因为更新通常包含安全补丁。
您可以使用以下工具扫描和检查映像的更新:
Docker Hubhttps://hub.docker.com/
Anchore: https://anchore.com/
Clair: https://github.com/quay/clair
**使用最少的基础映像**
最小基础映像仅包含运行容器化应用程序所需的基本要素。基础映像中存在的组件越少,潜在漏洞的攻击面就越小。
最小基础映像的一个示例是 Alpine Linux 发行版,由于其占用空间小和安全功能,它通常用于 Docker 映像。
Alpine Linux: https://alpinelinux.org/
Alpine Linuxhttps://alpinelinux.org/
**扫描镜像以查找漏洞**
使用 Clair 或 Anchore 等工具定期扫描镜像以查找已知漏洞。这些工具可以检测映像和容器配置中的潜在风险,从而允许您在将映像推送到注册表或在生产环境中部署映像之前解决这些风险。
**对映像进行签名和验证**
若要确保映像的完整性和真实性,请始终使用 Docker 内容信任 DCT 对映像进行签名。DCT 使用数字签名来保证您拉取或推送的镜像是您期望的镜像,并且在传输过程中未被篡改。
Enable DCT for your Docker environment by setting the following environment variable:
通过设置以下环境变量为 Docker 环境启用 DCT
```
export DOCKER_CONTENT_TRUST=1
```
**利用多阶段构建**
多阶段构建允许您在同一个 Dockerfile 中使用多个 FROM 指令。每个阶段可以具有不同的基础映像或指令集,但只有最终阶段才能确定最终映像的内容。通过使用多阶段构建,您可以最大程度地减少最终映像的大小和复杂性,从而降低漏洞风险。
下面是一个使用多阶段构建的示例 Dockerfile
```
# Build stage
FROM node:12-alpine AS build
WORKDIR /app
COPY . .
RUN npm ci --production
# Final stage
FROM node:12-alpine
COPY --from=build /app /app
CMD ["npm", "start"]
```
通过遵循这些映像安全最佳实践,您可以最大限度地降低漏洞风险,并确保容器化应用程序的安全。
## **Runtime Security 运行时安全性**
运行时安全性侧重于确保 Docker 容器在生产环境中运行时的安全性。这是容器安全的一个关键方面,因为威胁可能会在部署容器后到达或被发现。适当的运行时安全措施有助于最大程度地减少漏洞被利用时可能造成的损害。
**最小特权原则**
确保您的容器遵循最小权限原则,这意味着它们应该只具有执行其预期功能所需的最低权限。这有助于限制容器受损时的潜在损坏。
**尽可能以非 root 用户身份运行容器**
避免运行特权容器,因为这些容器可以访问主机的所有资源。
使用 Linux 功能从容器中剥离不必要的权限。
**只读文件系统**
通过将容器的文件系统设置为只读,可以防止攻击者修改关键文件或在容器中植入恶意软件。
在启动容器时使用 --read-only 标志,使其文件系统为只读。
为需要写入访问权限的位置实施卷装载或 tmpfs 装载。
**安全扫描和监控**
确保定期扫描容器中的漏洞,包括映像本身和运行时环境中的漏洞。
**使用容器扫描工具检测和修补映像中的漏洞。**
实施运行时监视以检测和响应安全事件,例如未经授权的访问尝试或意外的进程启动。
**Resource Isolation 资源隔离**
隔离容器的资源(如 CPU、内存和网络以防止单个受感染的容器影响其他容器或主机系统。
使用 Docker 的内置资源约束来限制容器可以使用的资源。
使用网络分段和防火墙来隔离容器并限制其通信。
**Audit Logs 审核日志**
维护容器活动的审核日志,以帮助进行事件响应、故障排除和合规性。
使用 Docker 的日志记录功能捕获容器日志,并将其输出到集中式日志记录解决方案。
实施日志分析工具以监控可疑活动,并在检测到潜在事件时自动发出警报。

216
content/learn-docker-9.md Normal file
View File

@ -0,0 +1,216 @@
+++
title = "Docker学习笔记(九)"
date = 2024-04-02
[taxonomies]
tags = ["学习笔记"]
+++
前言 Docker CLI命令行界面是一个强大的工具允许您与 Docker 容器、映像、卷和网络进行交互和管理。它为用户提供了广泛的命令,用于在开发和生产工作流中创建、运行和管理 Docker 容器和其他 Docker 资源。
<!-- more -->
在本主题中,我们将深入探讨 Docker CLI 的一些关键方面,包括以下内容:
**1. 安装**
要开始使用 Docker CLI您需要在计算机上安装 Docker。您可以按照 Docker 文档中相应操作系统的官方安装指南进行操作。
**2. 基本命令**
以下是一些需要熟悉的基本 Docker CLI 命令:
```
docker run从 Docker 镜像创建并启动容器
docker container列出正在运行的容器
docker image列出系统上所有可用的镜像
docker pull从 Docker Hub 或其他注册表拉取映像
docker push将映像推送到 Docker Hub 或其他注册表
docker build从 Dockerfile 构建映像
docker exec在正在运行的容器中运行命令
docker logs显示容器的日志
```
**3. Docker 运行选项**
docker run 是 Docker CLI 中最重要的命令之一。您可以使用各种选项自定义容器的行为,例如:
```
-d, --detach在后台运行容器
-e, --env为容器设置环境变量
-v, --volume绑定挂载卷
-p, --publish将容器的端口发布到主机
--name为容器分配名称
--restart指定容器的重启策略
--rm容器退出时自动移除容器
```
**4. Dockerfile**
Dockerfile 是一个脚本,其中包含用于构建 Docker 映像的指令。您可以使用 Docker CLI 通过 Dockerfile 构建、更新和管理 Docker 映像。
下面是 Dockerfile 的简单示例:
```
# Set the base image to use
FROM alpine:3.7
# Update the system and install packages
RUN apk update && apk add curl
# Set the working directory
WORKDIR /app
# Copy the application file
COPY app.sh .
# Set the entry point
ENTRYPOINT ["./app.sh"]
```
若要生成映像,请使用以下命令:
```
docker build -t my-image .
```
**5. Docker Compose**
Docker Compose 是一个 CLI 工具,用于使用 YAML 文件定义和管理多容器 Docker 应用程序。它与 Docker CLI 协同工作,提供一种一致的方式来管理多个容器及其依赖项。
使用官方安装指南安装 Docker Compose然后您可以创建一个 docker-compose.yml 文件来定义和运行多容器应用程序:
```
version: '3'
services:
web:
image: webapp-image
ports:
- "80:80"
database:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
```
使用以下命令运行应用程序:
```
docker-compose up
```
## **Docker Images Docker 镜像**
Docker 映像是轻量级、独立且可执行的包,其中包含运行应用程序所需的一切。这些映像包含所有必要的依赖项、库、运行时、系统工具和代码,使应用程序能够在不同的环境中一致地运行。
Docker 映像是使用 Dockerfile 构建和管理的。Dockerfile 是一个脚本,其中包含用于创建 Docker 映像的指令,提供设置应用程序环境的分步指南。
**使用 Docker 映像**
Docker CLI 提供了多个命令来管理和处理 Docker 映像。一些基本命令包括:
```
docker image ls: List all available images on your local system.
docker image ls列出本地系统上所有可用的镜像。
docker build: Build an image from a Dockerfile.
docker build从 Dockerfile 构建映像。
docker image rm: Remove one or more images.
docker image rm删除一个或多个镜像。
docker pull: Pull an image from a registry (e.g., Docker Hub) to your local system.
docker pull将映像从注册表例如 Docker Hub拉取到本地系统。
docker push: Push an image to a repository.
docker push将镜像推送到存储库。
```
例如,要从 Docker Hub 拉取官方 Ubuntu 映像,可以运行以下命令:
```
docker pull ubuntu:latest
```
拉取映像后,可以使用该映像和 docker run 命令创建并运行容器:
```
docker run -it ubuntu:latest /bin/bash
```
此命令创建一个新容器,并使用 /bin/bash shell 在容器内启动交互式会话。
**Sharing Images 共享镜像**
可以使用容器注册表(如 Docker Hub、Google Container Registry 或 Amazon Elastic Container Registry ECR共享和分发 Docker 映像。将映像推送到注册表后,其他人可以轻松访问和使用它们。
要共享您的镜像,您首先需要使用正确的命名格式对其进行标记:
```
docker tag <image-id> <username>/<repository>:<tag>
```
然后,您可以使用以下命令将标记的映像推送到注册表:
```
docker push <username>/<repository>:<tag>
```
**Containers 容器**
容器可以被认为是轻量级、独立和可执行的软件包,其中包括运行软件所需的一切,包括代码、运行时、库、环境变量和配置文件。容器将软件与其周围环境隔离开来,确保它在不同的环境中统一工作。
**为什么要使用容器?**
- 可移植性:容器确保应用程序在不同平台上一致地工作,无论是开发人员的笔记本电脑还是生产服务器。这消除了“它在我的机器上工作”的问题。
- 效率:容器是轻量级的,因为它们使用共享资源,而没有成熟操作系统的开销。这样可以缩短启动时间并减少资源使用。
- 可扩展性:容器可以根据工作负载轻松扩展或缩减,使其成为分布式应用程序和微服务的理想选择。
- 一致性容器使开发人员、QA 和运营团队能够在整个应用程序生命周期中拥有一致的环境,从而实现更快、更顺畅的部署管道。
- 安全性:容器提供与其他容器和底层主机系统的隔离级别,这有助于维护应用程序安全性。
**使用 Docker CLI 处理容器**
Docker CLI 提供了多个命令来帮助你创建、管理容器并与之交互。一些常用命令包括:
```
docker run用于创建和启动新容器。
docker container ls列出正在运行的容器。
docker container stop停止正在运行的容器。
docker container rm删除已停止的容器。
docker exec在正在运行的容器内执行命令。
docker logs获取容器的日志可用于调试问题。
```
## **Docker Volumes**
Docker 卷是一种用于保存 Docker 容器生成和使用的数据的机制。它们允许您将数据与容器本身分开,从而轻松备份、迁移和管理持久性数据。
**为什么卷很重要**
Docker 容器本质上是短暂的,这意味着它们可以很容易地停止、删除或替换。虽然这对于应用程序开发和部署非常有用,但在处理持久性数据时会带来挑战。这就是销量的来源。它们提供了一种独立于容器生命周期存储和管理数据的方法。
**Types of Volumes 卷的类型**
Docker 中有三种类型的卷:
- 主机卷 Host Volumes它们存储在主机的文件系统中通常位于 /var/lib/docker/volumes 目录中。这些可以很容易地访问,但可能会带来可移植性或文件系统兼容性的问题。
- 匿名卷 Anonymous Volumes这些卷是在运行容器时自动创建的无需指定卷。它们的 ID 由 Docker 生成,也存储在主机的文件系统中。
- 命名卷 Named Volumes与匿名卷类似命名卷存储在主机的文件系统中。但是您可以提供自定义名称以便于在其他容器或备份中引用。
**使用 Docker CLI 进行卷管理**
Docker CLI 提供了各种命令来管理卷:
```
docker volume create创建具有给定名称的新卷。
docker volume ls列出系统上的所有卷。
docker volume inspect提供有关特定卷的详细信息。
docker volume rm删除卷。
docker volume prune删除所有未使用的卷。
```
若要在容器中使用卷,可以在 docker run 命令中使用 -v 或 --volume 标志。例如:
```
docker run -d --name my-container -v my-named-volume:/var/lib/data my-image
```
此命令使用“my-image”映像创建名为“my-container”的新容器并将“my-named-volume”卷挂载到容器内的 /var/lib/data 路径处。
## **Docker Networks Docker 网络**
Docker 网络提供了管理容器通信的基本方法。它允许容器使用各种网络驱动程序相互通信以及与主机通信。通过了解和利用不同类型的网络驱动程序,可以设计容器网络以适应特定方案或应用程序要求。
**Network Drivers 网络驱动程序**
Docker 中提供了多个网络驱动程序。在这里,我们将介绍四种最常见的:
- bridge容器的默认网络驱动程序。它创建一个专用网络容器可以在其中相互通信并与主机通信。此网络上的容器可以通过主机的网络访问外部资源。
- host此驱动程序删除网络隔离并允许容器共享主机的网络。它适用于网络性能至关重要的情况因为它可以最大程度地减少容器网络的开销。
- none此网络驱动程序禁用容器网络。使用此驱动程序的容器在隔离环境中运行无需任何网络访问。
- overlay此网络驱动程序使部署在不同主机上的容器能够相互通信。它旨在与 Docker Swarm 配合使用,非常适合多主机或基于集群的容器部署。
**管理 Docker 网络**
Docker CLI 提供了各种命令来管理网络。以下是一些有用的命令:
```
列出所有网络docker network ls
检查网络docker network inspect <network_name>
创建新网络docker network create --driver <driver_type> <network_name>
将容器连接到网络docker network connect <network_name> <container_name>
断开容器与网络的连接docker network disconnect <network_name> <container_name>
移除网络docker network rm <network_name>
```

View File

@ -0,0 +1,100 @@
+++
title = "Linux-For-PC(一):构成与发行版"
date = 2023-07-20
[taxonomies]
tags = ["Linux"]
+++
前言 Linux 作为一款强大、灵活且免费的操作系统吸引了越来越多的用户。然而对于初学者来说Linux 可能显得有些陌生,甚至有些令人望而生畏。本文旨在为那些刚踏入 Linux 世界的新手提供一份指南帮助他们更好地了解、使用这个令人着迷的操作系统。我们将探讨Linux的基本概念解释为何选择Linux深入剖析其主要构成要素以及不同的发行版之间的差异。
<!-- more -->
## 一.什么是Linux
Linux 是一种开源的类 UNIX 操作系统内核。它由芬兰的 Linus Torvalds 于1991年开始开发是一个自由、免费的操作系统。Linux 内核是操作系统的核心,负责管理硬件资源,并提供各种系统服务。与 Windows 和 macOS 等操作系统不同Linux 的源代码对所有人开放,任何人都可以查看、修改和重新分发。这使得 Linux 具有极高的自由度和可定制性用户可以根据自己的需求和偏好来定制操作系统。Linux 广泛应用于各种设备,包括个人计算机、服务器、手机、嵌入式系统等,是一个功能强大且灵活多样的操作系统。
## 二.为什么要用Linux
1. **开源免费**Linux 是完全开源的,用户可以免费使用和修改源代码。
2. **稳定性和安全性**Linux 系统以其稳定性和安全性而闻名,适合长时间运行的服务。
3. **灵活性和可定制性**:用户可以根据需要定制 Linux 系统。
4. **广泛的软件支持**:有大量的开源软件可供选择,满足不同需求。
> Liunx可以用来玩游戏吗
实际上著名的 Steam Deck 的系统就是基于Arch linux 的。对于个人使用而言现在有不少原生支持linux 的游戏也可以使用Wine来运行Windows下的游戏。
>Linux上软件会不会太少
参见 [常用跨平台开源软件](https://blog.dich.ink/open-source-software)一文在社区的努力下如今软件生态已经非常丰富你也可以使用如Flatpak等商店安装软件或者直接使用Wine。如果有不得不在Windows下使用的软件可以装双系统。
## 三.Linux的主要构成
Linux操作系统主要由以下几个部分组成
1. **内核**操作系统的核心负责管理系统资源。如Zen内核LTS内核等。
2. **Shell**命令行界面用户通过它与系统交互如Bash,Zsh等。
3. **图形用户界面GUI**提供图形化操作界面如GNOME、KDE、XFCE等。
4. **文件系统**如ext4、Btrfs等用于组织和管理磁盘上的文件。
5. **系统库**:为应用程序提供运行时支持。
6. **应用程序**用户可以直接使用的软件如文本编辑器、网页浏览器等。其中也有著名的GNU工具如Vim,GCC等。
## 四.选择Linux发行版
从上文可以发现选择Linux发行版实际上是在选择 **内核/包管理器/图形界面** 等组件的排列组合。其中最主要的因素是包管理器。
Linux有许多不同的发行版但大致可以分为几个系
**Debian系**
DebianDebian以稳定性安全性和轻量级著称适合用于服务器和桌面环境。我们常说的Ubuntu就是基于Debian的发行版注重用户友好性和易用性。它提供了多种桌面环境选择以及许多现成的软件包。
```
APTAdvanced Package Tool是Debian系发行版的主要包管理器。它使用命令行工具如apt-get、aptitude等来管理软件包。
```
**Red Hat系**
- Red Hat Enterprise LinuxRHELRHEL是一款商业发行版专注于企业级应用和支持。它提供了长期支持和专业技术支持服务适用于企业级服务器和工作站。
- CentOSCentOS是基于RHEL源代码编译而成的免费发行版与RHEL兼容并提供类似的功能和性能。它也提供了长期支持版本和稳定性较高的特点。
- FedoraFedora是由Red Hat支持的社区驱动的发行版注重提供最新的软件特性和技术。它适用于开发者和技术爱好者提供了稳定的发布周期和丰富的软件包。
```
YUMYellowdog Updater, Modified是Red Hat系发行版的主要包管理器。最近的版本也开始采用DNFDandified YUM
```
**Arch系**
Arch LinuxArch Linux是一个简洁、轻量级且灵活的发行版注重简洁性和滚动更新。它采用“滚动发布”的方式用户可以通过自定义安装来构建自己的系统适合有一定Linux经验的用户。
```
PacmanPackage Manager是Arch Linux的主要包管理器。它使用简洁的命令来管理软件包如pacman -S安装软件包、pacman -Syu更新系统等。
```
**Gentoo系**
GentooGentoo是一个源码驱动的发行版用户可以通过源代码自定义编译软件包以满足自己的需求。它注重性能和灵活性适合高级用户和技术爱好者。
```
Portage是Gentoo的包管理器它是一个源代码驱动的包管理器允许用户从源代码构建和安装软件包。
```
除了以上列举的包管理器外还有其他一些较为特殊的包管理器如Slackware系的pkgtool、SUSE系的zypper等。
对于个人使用而言我个人建议新手使用Ubuntu,有比较易用的界面和完善的资料参考如果你是一个系统极客可以使用Arch linux 或者 NixOS。
## 五.个人日常使用需要注意什么?
1. **学习命令行**命令行是Linux的强大工具学习基本命令可以提高效率。
2. **选择合适的发行版**:根据个人需求和技术水平选择适合的发行版。
3. **系统备份**:定期备份重要数据,以防意外丢失。
4. **软件管理**:了解如何安装、更新和卸载软件。
5. **安全设置**:设置强密码,定期更新系统以修复安全漏洞。
6. **社区参与**Linux社区非常活跃遇到问题可以寻求社区帮助。
7. **硬件兼容性**检查你的硬件是否与选择的Linux发行版兼容。
8. **驱动程序**:确保你的硬件设备有可用的驱动程序,以避免兼容性问题。

View File

@ -0,0 +1,127 @@
+++
title = "Linux-For-PC(二):FHS与目录结构"
date = 2023-07-21
[taxonomies]
tags = ["Linux"]
+++
前言 在Linux世界中Filesystem Hierarchy StandardFHS是一座引导我们进入系统核心的桥梁它定义了Linux系统中目录结构的规范与作用为我们提供了一张清晰的地图指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构解释各个目录的用途与功能帮助我们更好地理解和利用Linux系统。
<!-- more -->
## 一.认识FHS
FHS是Filesystem Hierarchy Standard文件系统层次结构标准的缩写。它是一个定义了Linux系统中目录结构和各个目录作用的规范。FHS规定了Linux系统中各个目录的用途和预期内容以便确保不同Linux发行版之间的兼容性并使得用户能够更轻松地理解和管理系统。
FHS规范最初由Linux基金会Linux Foundation和自由软件基金会Free Software Foundation共同发布并经过多次修订和更新。该规范不仅对Linux系统本身有用也适用于其他类UNIX操作系统。
FHS规范定义了一些基本的目录如/bin、/boot、/dev等并规定了每个目录的作用和预期内容。这样做有助于系统管理员和开发人员更好地组织和管理文件系统并使得用户能够更轻松地找到所需的文件和数据。
## 二.常见目录结构
在刚刚由Windows切换至Linux时往往会对目录感到不解不知道安装的软件放在哪个目录之下
以下是对Linux系统目录结构的详细说明
- **/(根目录)**
根目录是整个文件系统的起点包含了系统中所有其他目录和文件。在Linux系统中根目录被表示为/。
- **/bin二进制文件**
/bin目录存放着一些最基本的系统命令如ls、cp、mv等这些命令通常被所有用户使用。
- **/boot引导文件**
/boot目录存放着启动Linux系统所需的引导文件如内核映像vmlinuz、引导加载程序boot loader配置文件如GRUB配置文件等。
- **/dev设备文件**
/dev目录包含了系统中所有设备的特殊文件如硬盘、键盘、鼠标等。在Linux中一切皆文件设备被抽象为文件通过/dev目录中的特殊文件来表示。
- **/etc配置文件**
/etc目录包含了系统的配置文件如网络配置、用户账户信息、服务配置等。这些配置文件通常以纯文本的形式存在可以由系统管理员进行编辑和修改。
- **/home用户主目录**
/home目录是系统中所有普通用户的主目录所在地每个用户通常都有一个对应的子目录用于存放用户的个人文件和数据。
- **/lib库文件**
/lib目录存放着系统所需的共享库文件这些库文件包含了一些程序运行所需的函数和数据为程序提供了基本的支持。
- **/mnt挂载点**
/mnt目录用于挂载临时文件系统如光盘、移动硬盘等。系统管理员可以将其他设备或文件系统挂载到/mnt目录下以便访问其中的文件和数据。
- **/opt可选软件包**
/opt目录用于存放一些可选的软件包和应用程序这些软件包通常不属于Linux发行版的默认安装范围但可以被用户自行安装和管理。
- **/proc进程信息**
/proc目录是一个虚拟的文件系统包含了系统运行时的各种进程信息和系统状态信息。用户可以通过读取/proc目录中的特殊文件来获取系统信息。
- **/sbin系统命令**
/sbin目录存放着一些系统管理和维护命令这些命令通常只能由超级用户root执行用于系统的管理和维护。
- **/srv服务数据**
/srv目录用于存放一些服务相关的数据文件如Web服务器的网站数据、FTP服务器的文件等。每个服务通常都会有一个对应的子目录。
- **/tmp临时文件**
/tmp目录用于存放临时文件和临时数据这些文件通常在系统重启时会被删除。任何用户都可以在/tmp目录下创建临时文件。
- **/usr用户程序**
/usr目录包含了系统中大部分用户可用的程序和文件如用户应用程序、共享库文件、文档等。它通常是系统的二级目录类似于Windows系统中的Program Files目录。
- **/var可变数据**
/var目录用于存放系统运行时产生的可变数据如日志文件、邮件、缓存文件等。这些数据通常会随着系统的运行而不断变化。
> 注意NixOS不符合FHS标准
## 三.分区大小
对各个分区进行容量分配时,需要根据系统的实际需求和用途来进行规划。一般而言在安装引导时可以选择让程序自动分区。
- **根目录(/**根目录是整个文件系统的起点通常会分配较大的空间以确保系统和应用程序有足够的空间运行。建议分配至少20GB的空间给根目录。
- **/home目录**/home目录用于存放用户的个人文件和数据因此需要根据用户数量和存储需求来进行容量分配。一般情况下建议为每个用户分配至少10GB的空间。
- **/var目录**/var目录用于存放系统运行时产生的可变数据如日志文件、邮件、缓存文件等。根据系统的运行情况和日志文件的大小来进行容量分配一般建议分配10-20GB的空间。
- **/tmp目录**/tmp目录用于存放临时文件和临时数据通常不需要分配太大的空间。建议分配至少1-2GB的空间给/tmp目录。
- **/boot目录**/boot目录存放着启动Linux系统所需的引导文件通常只需要分配几百MB的空间即可。
- **Swap分区**Swap分区是一种虚拟内存用于暂时存放不常用的内存数据。当系统内存不足时Linux会将一部分内存数据移动到Swap分区中以避免内存耗尽导致系统崩溃。Swap分区的大小通常与系统内存大小有关一般建议为系统内存的1.5-2倍。例如如果系统内存为4GB则建议设置Swap分区大小为6-8GB。
> 这里特别讲讲Swap分区
Swap分区可以通过以下几种方式实现
- 交换分区Swap Partition创建一个独立的交换分区通常是一个专门的分区用于存放Swap数据。
- 交换文件Swap File创建一个专门的文件用于存放Swap数据而不是创建独立的分区。这种方式更加灵活可以根据需要动态调整Swap的大小。
- Swap大小Swap的大小应该根据系统的内存大小和使用情况来确定一般建议为系统内存的1.5-2倍。
- Swap分区/文件的位置Swap分区/文件应该位于较快的存储介质上,以确保交换操作的效率。
Swap的优先级如果同时存在多个Swap分区/文件可以通过设置优先级来指定系统使用的Swap空间。
## 四.将 `home` 目录下的文件夹改为英文
可以使用 `xdg-user-dirs-update` 工具来更新用户目录为英文版本。你可以按照以下步骤进行:
1. **编辑用户目录配置文件**
打开或创建 `~/.config/user-dirs.dirs` 文件,用文本编辑器编辑它:
```bash
nano ~/.config/user-dirs.dirs
```
2. **将目录名称更改为英文**
在该文件中,你可以看到类似以下的条目:
```bash
XDG_DESKTOP_DIR="$HOME/桌面"
XDG_DOWNLOAD_DIR="$HOME/下载"
XDG_DOCUMENTS_DIR="$HOME/文档"
XDG_MUSIC_DIR="$HOME/音乐"
XDG_PICTURES_DIR="$HOME/图片"
XDG_VIDEOS_DIR="$HOME/视频"
```
将这些路径改为英文,例如:
```bash
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos"
```
3. **重命名现有的文件夹**
手动将 `home` 目录下的文件夹重命名为英文版本:
```bash
mv ~/桌面 ~/Desktop
mv ~/下载 ~/Downloads
mv ~/文档 ~/Documents
mv ~/音乐 ~/Music
mv ~/图片 ~/Pictures
mv ~/视频 ~/Videos
```
4. **应用更改**
完成以上操作后,运行以下命令应用新配置:
```bash
xdg-user-dirs-update
```
这样,`home` 目录下的文件夹就会改为英文,并且系统也会正确识别这些新的目录路径。

View File

@ -0,0 +1,176 @@
+++
title = "Linux-For-PC(三):内核/shell/包管理/文件系统/桌面环境"
date = 2023-07-22
[taxonomies]
tags = ["Linux"]
+++
前言 在Linux世界中内核/shell/包管理/文件系统构成了Linux系统的核心它们相互配合共同构建了一个强大而稳定的操作环境。本文将深入探讨这些关键组成部分解释它们的作用和原理帮助读者更好地理解Linux系统的运作机制。
<!-- more -->
## **一.Linux内核**
有许多不同的版本每个版本都包含了一系列的功能改进、bug修复和性能优化。在Linux发行版中通常会使用某个特定版本的Linux内核或者在需要时进行升级。以下是一些常见的Linux内核及其主要特点
**Zen内核**
- Zen内核是Linux内核的一个变体旨在提供更好的性能和响应性。它通常包含了一些特定的调度程序和调优参数以提高系统的负载均衡和响应速度。Zen内核也可能包含一些来自其他内核变体的功能和补丁以进一步优化性能。
**LTS内核**
- LTSLong-Term Support内核是一种长期支持的内核版本它会获得更长时间的更新和维护。LTS内核通常会选择一些相对稳定和经过充分测试的功能并对其进行长期支持以确保系统的稳定性和安全性。
**Real-Time内核**
- Real-Time内核是一种专门针对实时应用场景进行优化的内核变体。它通常包含了一些实时调度算法和机制以确保系统能够及时响应各种事件并满足实时性要求。Real-Time内核适用于一些对实时性要求较高的应用如工业控制、机器人控制等领域。
**Hardened内核**
- Hardened内核是一种针对安全性进行优化的内核变体。它通常包含了一些安全增强功能和补丁以提高系统的安全性和抵御攻击的能力。Hardened内核适用于一些对安全性要求较高的应用如服务器、云计算等场景。
**XanMod内核**
- XanMod内核是一个基于Linux内核的自定义内核旨在提供更好的响应性和性能。它包含了一些针对桌面和工作站系统优化的功能和补丁如MuQSS调度器、BFQ I/O调度器等以提高系统的响应速度和性能稳定性。XanMod内核还支持一些实时性应用如音视频处理等适用于对系统响应速度要求较高的用户。
**CachyOS内核**
- CachyOS内核是一个专门针对缓存优化的Linux内核变体。它包含了一些针对缓存系统优化的功能和调整以提高系统的缓存性能和数据访问速度。CachyOS内核通常适用于需要高性能缓存的应用场景如数据库服务器、Web服务器等。
这些内核变体针对不同的需求和使用场景进行了优化可以根据具体的应用需求来选择合适的内核版本。例如如果您需要更好的性能和响应性可以选择Zen内核如果您需要长期支持和稳定性可以选择LTS内核如果您需要实时性能可以选择Real-Time内核如果您需要更高的安全性可以选择Hardened内核。
## **二.Linux Shell**
在Linux系统中有许多不同的Shell命令行解释器每种Shell都有自己的特点和用途。以下是一些常见的Linux Shell及其主要特点
**BashBourne Again Shell**
- Bash是Linux系统中最常用的Shell之一也是默认的命令行解释器。它是Bourne Shell的增强版提供了丰富的功能和扩展性包括命令历史、命令补全、作业控制等。Bash具有良好的兼容性和易用性适用于日常的系统管理和脚本编程。
**ZshZ Shell**
- Zsh是一种功能强大的Shell提供了丰富的功能和扩展性如更强大的命令补全、自动纠正拼写错误、主题和插件系统等。Zsh具有良好的可定制性和用户体验适用于高级用户和程序员。
**FishFriendly Interactive Shell**
- Fish是一种用户友好的交互式Shell提供了直观的命令提示和自动补全功能以及丰富的语法高亮和命令提示信息。Fish具有良好的用户体验和易用性适用于初学者和普通用户。
**DashDebian Almquist Shell**
- Dash是一种轻量级的Shell专门设计用于系统启动过程和脚本执行。Dash具有较高的执行速度和较低的内存占用适用于系统启动脚本和简单的脚本编程。
Bash是最常用的Shell之一具有良好的兼容性和功能性Zsh提供了更多的高级特性和定制选项适用于高级用户和程序员Fish具有友好的交互式体验和直观的用户界面适用于初学者和普通用户Dash则是一个轻量级的Shell专门用于系统启动过程和简单的脚本编程。用户可以根据自己的需求和偏好选择合适的Shell。
## **三.Linux包管理器**
在Linux系统中有几种常见的包管理器它们各自管理着不同的发行版具有不同的特点和用途。以下是一些常见的Linux包管理器及其主要特点
**APTAdvanced Package Tool**
- APT是Debian系如Debian、Ubuntu中最常用的包管理器之一。它使用基于命令行的工具`apt-get``apt-cache`等来安装、升级和删除软件包。APT还支持依赖关系的自动解决使得软件包的安装和管理变得更加方便。
**YUMYellowdog Updater, Modified**
- YUM是Red Hat系如CentOS、Fedora中常用的包管理器之一。它使用基于命令行的工具`yum`来管理软件包。YUM具有良好的依赖关系解决能力和事务处理功能使得系统升级和软件包管理变得更加简单和可靠。
**DNFDandified YUM**
- DNF是YUM的下一代版本逐渐取代了YUM在Fedora和RHEL系列中的地位。DNF具有更快的包查询和事务处理能力以及更友好的用户界面。它是未来主流的包管理器之一。
**PacmanPackage Manager**
- Pacman是Arch Linux中常用的包管理器也被一些其他发行版如Manjaro采用。Pacman使用简洁的命令`pacman -S`安装软件包、`pacman -Syu`更新系统等来管理软件包。Pacman具有简单、直观的界面和快速的操作速度适用于对系统有一定了解的用户。
**zypper**
- zypper是openSUSE中常用的包管理器它使用基于命令行的工具`zypper install``zypper update`等来管理软件包。zypper具有良好的依赖关系解决能力和事务处理功能使得系统升级和软件包管理变得更加简单和可靠。
**dpkg**
- dpkg是Debian系如Debian、Ubuntu中的低级别软件包管理工具用于直接管理软件包的安装、升级和删除。它提供了一系列的命令`dpkg -i`安装软件包、`dpkg -r`删除软件包等。
**RPMRPM Package Manager**
- RPM是Red Hat系如CentOS、Fedora中的低级别软件包管理工具用于直接管理软件包的安装、升级和删除。它提供了一系列的命令`rpm -i`安装软件包、`rpm -e`删除软件包等。
**Portage**
- Portage是Gentoo Linux中的包管理器它使用源代码进行软件包的安装和管理。Portage具有高度定制化和灵活性允许用户根据需要自定义软件包的编译参数和依赖关系。
**Snap**
- Snap是一种跨发行版的软件包格式和包管理器允许用户在不同的Linux发行版上安装和管理软件包。Snap具有自包含性和隔离性使得软件包的安装和升级变得更加简单和安全。
**Flatpak**
- Flatpak是另一种跨发行版的软件包格式和包管理器类似于Snap允许用户在不同的Linux发行版上安装和管理软件包。Flatpak提供了一种统一的应用分发和运行环境使得软件包的安装和升级更加简单和可靠。
## **四.Linux文件系统**
Linux系统支持多种文件系统每种文件系统都有自己的特点和优势适用于不同的应用场景和需求。以下是一些常见的Linux文件系统及其主要特点
**ext4**
- ext4是Linux系统中最常用的文件系统之一它是ext文件系统的后续版本提供了更好的性能和扩展性。ext4支持更大的文件和分区大小更快的文件系统检查和恢复速度以及更高的性能和稳定性。
**Btrfs**
- Btrfs是一种先进的文件系统具有许多先进的功能和特性如快照、数据校验、数据压缩等。Btrfs支持在线扩展和收缩分区大小以及动态添加和删除磁盘适用于需要高级特性和灵活性的应用场景。此外Btrfs对快照功能支持较好。
> 快照功能是一种文件系统的特性,它允许用户在特定时间点对文件系统的状态进行快照或备份,并且可以在需要时一键恢复到该时间点的状态。
快照允许用户轻松地创建文件系统的历史版本,并在需要时回滚到特定的版本;快照允许用户在文件系统中进行实验和测试,并在测试失败或不需要时轻松地回滚到初始状态,以避免对系统造成影响。在升级或安装过程中出现问题时快速恢复到原始状态
**XFS**
- XFS是一种高性能的日志文件系统适用于大型文件和高吞吐量的应用场景。XFS支持大容量的文件和分区具有较低的碎片化和较高的并发性能适用于大规模存储和数据分析等应用。
**ZFS**
- ZFS是一种先进的文件系统具有强大的数据管理和保护功能如快照、数据校验、数据压缩等。ZFS支持软件RAID和存储池pool以及动态添加和删除磁盘适用于数据中心和大规模存储等应用场景。
**F2FS**
- F2FS是一种针对闪存存储设备进行优化的文件系统具有高性能和高可靠性。F2FS支持闪存特性如块擦除计数block erase count和块生命周期管理block lifetime management适用于固态硬盘SSD和闪存卡等闪存设备。
## **五.Linux桌面环境**
Linux系统有多种不同的桌面环境每种环境都有其独特的特点、风格和用户体验。以下是一些常见的Linux桌面环境及其主要特点
**GNOME**
- GNOME是一个功能强大、现代化的桌面环境具有直观的用户界面和丰富的功能。它采用了扁平化的设计风格和简洁的用户界面提供了丰富的应用程序和插件适用于普通用户和开发人员。
**KDE Plasma**
- KDE Plasma是一个灵活、可定制的桌面环境提供了丰富的特性和选项如桌面特效、窗口管理器、小部件等。它采用了现代化的设计风格和强大的桌面管理功能适用于高级用户和技术爱好者。
**XFCE**
- XFCE是一个轻量级、快速的桌面环境具有简洁的用户界面和低资源消耗。它采用了传统的桌面布局和简约的设计风格提供了基本的桌面管理功能和应用程序适用于老旧计算机和资源有限的环境。
**LXQt**
- LXQt是一个轻量级、快速的桌面环境是LXDE和Razor-qt的合并项目。它采用了现代化的设计风格和简洁的用户界面提供了丰富的特性和可定制选项适用于资源有限的环境和嵌入式系统。
**Cinnamon**
- Cinnamon是一个基于GNOME的桌面环境具有类似于传统Windows桌面的用户界面和功能。它采用了传统的桌面布局和直观的用户体验提供了丰富的特性和可定制选项适用于对传统桌面风格有需求的用户。
GNOME和KDE Plasma提供了丰富的特性和高度定制化选项适用于高级用户和开发人员XFCE和LXQt则提供了轻量级和快速的用户体验适用于资源有限的环境Cinnamon则提供了类似于传统Windows桌面的用户界面和功能适用于对传统桌面风格有需求的用户。可以根据自己的需求和偏好选择合适的桌面环境。
> 当然,也可以使用轻量级的窗口管理器。
窗口管理器是Linux系统中控制窗口布局、管理窗口行为的关键组件。它们决定了窗口的外观和行为方式以及如何管理和排列窗口。以下是一些常见的窗口管理器及其主要特点
**X Window Manager (XWM)**
- X Window Manager是最基本的窗口管理器用于管理X Window系统中的窗口。它提供了最基本的窗口布局和管理功能如窗口移动、调整大小、最小化等。XWM本身并不提供任何外观效果但可以与其他工具配合使用来实现更丰富的窗口管理和外观特性。
**Openbox**
- Openbox是一个轻量级的窗口管理器具有简洁的用户界面和低资源消耗。它提供了丰富的自定义选项和扩展功能如虚拟桌面、窗口装饰、键盘快捷键等。Openbox适用于资源有限的环境和对简洁风格有需求的用户。
**i3**
- i3是一个动态平铺窗口管理器采用了平铺式布局将窗口按照一定规则自动排列在屏幕上。它提供了快速的窗口切换和管理功能支持键盘操作和自动布局调整适用于需要高效多任务处理的用户。
**Awesome**
- Awesome是一个高度可定制的动态平铺窗口管理器具有丰富的特性和扩展功能。它采用Lua脚本语言进行配置和定制支持强大的自定义选项和扩展功能适用于高级用户和技术爱好者。
**KWin**
- KWin是KDE桌面环境中的默认窗口管理器具有丰富的特性和功能。它提供了多种窗口布局和管理选项支持虚拟桌面、窗口效果、窗口组织等功能适用于需要丰富特性和高度定制化的用户。
这些窗口管理器之间的主要异同在于窗口布局、外观效果、自定义选项和功能特性等方面。Openbox和i3提供了简洁的用户界面和低资源消耗适用于资源有限的环境Awesome和KWin则提供了丰富的特性和扩展功能适用于高级用户和技术爱好者。用户可以根据自己的需求和偏好选择合适的窗口管理器。
> Wayland和X11
Wayland和X11都是用于Linux系统的图形显示协议它们负责管理图形用户界面GUI的显示和交互。下面是它们的简要介绍以及异同点
- **X11X Window System**
X11是一个由MIT开发的图形显示协议长期以来一直是Linux系统中最常用的图形显示系统。它采用客户端-服务器模型图形应用程序客户端通过X服务器与显示设备服务器进行通信。X11提供了丰富的图形特性和功能如窗口管理、窗口装饰、多任务处理等。
- **Wayland**
Wayland是一个由Red Hat主导开发的新一代图形显示协议旨在取代X11成为Linux系统的标准图形显示系统。Wayland采用了现代化的设计理念和架构取消了X11中复杂的客户端-服务器模型将图形显示功能直接集成到操作系统中。Wayland具有更低的延迟和更高的性能支持更好的硬件加速和多触摸设备以及更简洁的代码结构。
**异同点**
- **架构差异**X11采用了客户端-服务器模型图形应用程序通过X服务器与显示设备进行通信而Wayland取消了这种模型将图形显示功能直接集成到操作系统中减少了中间层的复杂性。
- **性能差异**Wayland具有更低的延迟和更高的性能支持更好的硬件加速和多触摸设备使得图形显示更加流畅和响应。
- **功能差异**X11提供了丰富的图形特性和功能如窗口管理、窗口装饰、多任务处理等Wayland在功能上相对较少但提供了更简洁的代码结构和更好的性能。
- **兼容性差异**X11在Linux系统中被广泛使用拥有大量的应用程序和工具的支持而Wayland在兼容性方面仍在发展中尚未完全取代X11成为Linux系统的标准图形显示系统。
总的来说Wayland是未来Linux系统中的趋势具有更好的性能和更简洁的架构但在兼容性和功能丰富度上仍有待改进。X11则是当前仍然广泛使用的图形显示系统拥有丰富的生态和大量的应用程序支持。
## **六.后记**
个人使用推荐Zen+Zsh+Pacman+Btrfs+Hyprland,并使用 paru xxx 来搜索软件包使用paru -S xxx 安装软件。

View File

@ -0,0 +1,82 @@
+++
title = "Linux-For-PC(四):TerminalConsole and Shell"
date = 2023-07-23
[taxonomies]
tags = ["Linux"]
+++
前言 在linux的学习过程中我们常常遇到诸如 TerminalConsolebash,zsh,shell,tty 等概念,这些概念常常被混淆,似乎都和命令行相关。本文从历史角度出发介绍它们的前世今生。
<!-- more -->
## 终端和控制台
终端,英文叫做 terminal ,通常简称为 term控制台英文叫做 console。
要明白这两者的关系,还得从最初的计算机说起。当时的计算机价格昂贵,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机的设备就叫做终端。
而控制台又是什么回事呢?其概念来自于管风琴的控制台。顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按钮)。 在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台。
终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是计算机本身就有的设备,一个计算机只有一个控制台。计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。
以上是控制台和终端的历史遗留区别。现在由于计算机硬件越来越便宜,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。
  
## 内核与外壳
内核( Kernel )和外壳( Shell )是 linux 的两个主要部分。Kernel 是操作系统的核心,系统的文件管理、进程管理、内存管理、设备管理这些功能,都是由 Kernel 提供的。
用户和操作系统内核交流需要一个工具,那么这个工具就是 Shell。
什么是 Shell在 Linux 中,最常见的 Shell 形式有命令行界面命令行界面和图形界面两种。并不是打开的那个终端窗口就是 Shell如Alacritty、Gnome-Terminal、xterm 、kitty等程序它们不是 Shell而它们里面运行的 Bash、Zsh、fish 等命令行解释器程序,才是 Shell。
那 Alacritty、Gnome-Terminal、xtermxterm 是什么?
它们是终端模拟器。
前面提到过,在远古时代,终端和控制台都是有实体的。控制台直接和计算机在一起,你可以通过控制台控制计算机。终端通过数据线和计算机连接,终端也提供一个键盘和一个屏幕,你可以通过键盘向计算机下达指令,然后通过屏幕观察输出。
但是现在的计算机组成和以前不一样了,一般一台电脑都是自带键盘和屏幕,很少再外接终端设备。
所以 Linux 提供了另外一个更高级的功能,那就是虚拟终端。那就是在一台电脑上,通过软件的模拟,好像有好几个终端连接在这台计算机上一样。
现在说的终端,比如 linux 中的虚拟终端,都是软件的概念。虚拟终端称之为 ttytty 是电传打字机电传打字机 Teletypewriter 的缩写在带显示屏的视频终端出现之前tty是最流行的终端设备。每一个 tty 都有一个编号,在/dev目录下有相应的设备文件。其中/dev/tty1到/dev/tty7可以通过 Ctrl+Alt+F1 到 Ctrl+Alt+F7 进行切换,也可以通过 chvt 命令进行切换,就好比是以前多人公用的计算机中的六个终端设备,这就是为什么这个叫“虚拟终端”的原因。
## 时代变迁
随着时间的推移,我们看到了从硬件到软件的转变,以及从多用户共享到个人使用的转变。这种变迁不仅影响了终端和控制台的概念,也塑造了我们对计算机的理解和期待。

View File

@ -0,0 +1,121 @@
+++
title = "Linux-For-PC(五):BIOS-UEFI-MBR-GPT-GRUB"
date = 2023-07-24
[taxonomies]
tags = ["Linux"]
+++
前言 在计算机领域系统引导和磁盘分区是至关重要的。本文将介绍BIOS与UEFIMBR与GPT以及它们之间的异同点。此外我们还会讨论与这些概念密切相关的引导加载程序——GRUB。
<!-- more -->
## BIOS
> BIOSBasic Input Output System直译成中文名称就是"`基本输入输出系统`"。它是一组固化到主板中一个ROM芯片上的程序它可以从CMOS中读写系统设置的具体信息。此程序保存着计算机最重要的基本输入输出程序、开机后的自检程序和系统自启动程序。简单来说BIOS只认识设备不认识分区、不认识文件。
## UEFI
> UEFI统一可扩展固件接口是一个公开的规范定义了操作系统和平台固件之间的软件接口。UEFI 是传统 PC BIOS 的继承者是取代传统BIOS的相比传统BIOS来说它更易实现容错和纠错特性也更强。
它将引导数据存储在 .efi 文件中,而不是固件中。你经常会在新款的主板中找到 UEFI 启动模式。UEFI 启动模式包含一个特殊的 EFI 分区,用于存储 .efi 文件并用于引导过程和引导加载程序。
>
> UEFI使用GPT的分区引导方案支持更大的硬盘。由于省去了BIOS自检的过程所以启动速度更快。传统BIOS主要支持MBR引导UEFI则是取代传统BIOS它加入了对新硬件的支持其中就有支持2TB以上硬盘。
## MBR
> 全新硬盘在使用之前必须进行分区格式化,硬盘分区初始化的格式主要有两种,分别为`MBR`格式和`GPT`格式。MBR是传统的分区表类型当一台电脑启动时它会先启动主板上的BIOS系统BIOS再从硬盘上读取MBR主引导记录硬盘上的MBR运行后就会启动操作系统但最大的缺点则是不支持容量大于2T的硬盘。
## GPT
> 而GPT是另一种更先进的磁盘系统分区方式它的出现弥补了MBR这个缺点最大支持`18EB`的硬盘,是基于`UEFI`使用的磁盘分区架构。目前所有Windows系统均支持`MBR`,而`GPT`只有`64`位系统才能支持。`BIOS只支持MBR引导系统而GPT仅可用UEFI引导系统`。正因为这样现在主板大多采用BIOS集成UEFI或UEFI集成BIOS以此达到同时兼容MBR和GPT引导系统的目的。
## GRUB
> GRUBGRand unified bootloader,多操作系统启动程序。它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。
>
> GRUB可用于选择操作系统分区上的不同内核也可用于向这些内核传递启动参数。`它是一个多重操作系统启动管理器,用来引导不同系统`如Windows、Linux。Linux常见的引导程序包括LILO、GRUB、GRUB2。
## Legacy
> 如果你遇到过刚制作的U盘启动盘无法启动或者新买的固态硬盘做好系统后无法启动那么大概率的问题就出现在BIOS的引导模式的选择上是UEFI还是Legacy。legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程Legacy启动模式包含一系列已安装的设备这些设备在引导过程中计算机执行 POST (开机自检)测试时会被初始化。传统引导将检查所有连接设备的主引导记录 (MBR),通常位于磁盘的第一个扇区。
当它在设备中找不到引导加载程序时Legacy会切换到列表中的下一个设备并不断重复此过程直到找到引导加载程序否则返回错误。
| BIOS | UEFI |
| ---------------------------------- | --------------------------------------------------------------- |
| 用于初始化计算机硬件并引导操作系统 | 在计算机启动时运行 |
| 具有较少功能和灵活性 | 具有更多功能和灵活性 |
| | 支持更大的硬盘容量、更快的启动速度、更好的安全性和更多的扩展性v |
| | 通常具有图形用户界面GUI |
| MBR | GPT |
| ----------------------------------------- | ---------------------------------------------------------------------------------- |
| 用于分区磁盘并存储分区布局信息 | 用于分区磁盘并存储分区布局信息 |
| 支持最多4个主分区或3个主分区加1个扩展分区 | 支持最多4个主分区或3个主分区加1个扩展分区支持最多4个主分区或3个主分区加1个扩展分区 |
| | 具有更好的数据完整性和可靠性,使用校验和检测数据损坏 |
| | UEFI需要GPT格式的磁盘才能引导 |
| GRUB |
| -------------------------------------------------------------------------------- |
| 用于在计算机系统启动时加载操作系统的引导加载程序与BIOS、UEFI、MBR、GPT都有关联 |
| 能够与BIOS或UEFI兼容可以在MBR或GPT格式的磁盘上运行 |
| 通常用于多引导系统,可以在多个操作系统之间进行选择,并提供了灵活的配置选项 |
| UEFI 引导模式 | Legacy引导模式 |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- |
| UEFI 提供了更好的用户界面 | Legacy引导模式是传统的且非常基本的 |
| 使用 GPT 分区方案 | 使用 MBR 分区方案 |
| UEFI 提供更快的启动时间 | 相比UEFI它的速度较慢 |
| 由于 UEFI 使用 GPT 分区方案,因此它可以支持多达 9 zB 的存储设备 | Legacy使用的 MBR 分区方案仅支持最多 2 TB 存储设备 |
| UEFI 以 32 位和 64 位运行,支持鼠标和触摸板 | Legacy在仅支持键盘仅 16 位模式下运行 |
| 它允许安全启动防止加载未经授权的应用程序它还可能阻碍双启动因为它将操作系统OS视为应用程序 | 它不提供允许加载未经授权的应用程序的安全启动方法,未限制双启动 |
| 它具有更简单的更新过程 | 与UEFI相比它更复杂 |
## 组合
- **BIOS+MBR**
这是最传统的,系统都会支持;唯一的缺点就是`不支持容量大于2T的硬盘`
- **BIOS+GPT**
BIOS是可以使用GPT分区表的硬盘来作为数据盘的但不能引导系统若电脑同时带有容量小于2T的硬盘和容量大于2T的硬盘`小于2T的可以用MBR分区表安装系统而大于2T的可以使用GPT分区表来存放资料`。但系统须使用64位系统。
- **UEFI+MBR**
可以把UEFI设置成`Legacy模式`传统模式让其支持传统MBR启动效果同`BIOS+MBR`也可以建立FAT分区放置UEFI启动文件来可应用在U盘和移动硬盘上实现双模式启动。
- **UEFI+GPT**
如果要把大于2T的硬盘作为系统盘来安装系统的话就必须`UEFI+GPT`。而且系统须使用64位系统否则无法引导。但系统又不是传统在PE下安装后就能直接使用的引导还得经过处理才行。
## 系统的启动过程
从按下计算机的开机按钮到用户开始使用计算机,涉及了多个步骤和组件,让我们一起详细了解整个过程:
**1. 电源启动**
- 用户按下计算机的开机按钮电源开始供电计算机硬件开始初始化。电源将电流传递到主板上的BIOS/UEFI芯片。
**2. BIOS/UEFI启动**
- BIOS/UEFI芯片接收到电源信号后开始执行初始化过程。它首先进行自检POST检测主板、CPU、内存等硬件设备的工作状态并在显示屏上输出相关信息。
- BIOS/UEFI根据配置的启动顺序通常为硬盘、光盘、USB等搜索启动设备并加载位于启动设备上的引导加载程序。
**3. 引导加载程序加载**
- 引导加载程序如GRUB被加载到内存中它负责后续的操作系统加载过程。GRUB通常会显示启动菜单列出可用的操作系统选项。
- 用户可以在GRUB菜单中选择要启动的操作系统或者等待默认选项启动。
**4. 操作系统加载**
- 一旦选择了启动选项引导加载程序会加载操作系统的内核和初始化RAM磁盘initramfs/initrd
- 内核加载完成后,操作系统开始启动初始化过程,包括加载系统服务、挂载文件系统、启动用户界面等。
**5. 用户登录**
- 操作系统初始化完成后,显示登录界面(如果配置了图形用户界面),用户输入用户名和密码登录系统。
- 如果登录成功,操作系统加载用户的桌面环境或命令行界面,用户开始使用计算机。
整个过程从按下开机按钮到用户开始使用计算机,涉及了硬件初始化、引导加载程序加载、操作系统启动和用户登录等多个步骤和组件的协同工作。每个步骤都至关重要,确保计算机能够正常启动并提供给用户可用的操作环境。
## 后记
参考:
[聊聊BIOS、UEFI、MBR、GPT、GRUB……](https://segmentfault.com/a/1190000020850901)

View File

@ -0,0 +1,231 @@
+++
title = "Linux-For-PC(六):常用命令与性能分析"
date = 2023-07-25
[taxonomies]
tags = ["Linux"]
+++
前言 在学习Linux操作系统时熟悉常用命令和性能分析工具是至关重要的。让我们一起探索Linux的世界提升技能解锁无限可能
<!-- more -->
> 翻译自https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55。
## **问题背景**
当登录到一台有性能问题的Linux服务器第一分钟要检查什么
在Netflix我们拥有庞大的EC2 Linux虚拟机云我们有众多性能分析工具来监视和诊断这些Linux服务器的性能。这些工具包括Atlas负责整个虚拟机云的监控和Vector负责按需对虚拟机实例进行性能分析。这些工具可以帮助我们解决大多数问题但有时我们需要登录到虚拟机实例并运行一些标准的Linux性能工具。
## **前60秒摘要**
在本文中Netflix性能工程团队将使用您应该使用的标准Linux工具在命令行中向您展示一个性能诊断过程的前60秒。在60秒内您可以通过运行以下十个命令来了解有关系统资源使用和运行进程的信息。最应该关注的是一些很容易理解的错误、饱和度指标和资源利用率等指标。饱和度是衡量资源负载超出其处理能力的指标它可以通过观察请求队列的长度或等待时间反映出来。
```
uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top
```
其中的一些命令需要安装sysstat软件包。这些命令暴露出的指标将帮助您完成一些USE方法一种查找性能瓶颈的方法。它们涉及检查所有资源CPU、内存、磁盘等的利用率饱和度和错误指标。在诊断过程中还应该注意检查和排除某些资源的问题。因为通过排除某些资源的问题可以缩小诊断的范围并指民后续的诊断。
## **uptime**
```
$ uptime
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
```
这是快速查看平均负载的方法该平均负载指标了要运行的任务进程的数量。在Linux系统上这些数字包括要在CPU上运行的进程以及在不中断IO通常是磁盘IO中阻塞的进程。这里给出了资源负载高层次的概览但是没有其它工具就很难正确理解值得快速看一眼。
这三个数字是指数衰减移动平均值分别代表了1分钟、5分钟、15分钟的平均值。这三个数字使我们对负载如何随时间变化有了一定的了解。例如如果您去诊断一个有问题的服务器发现1分钟的值比15分钟的值低很多那么您可能已经登录得太晚了错过了问题。
在上面的例子中平均负载有所增加因为1分钟的值30相对15分钟的值19来说大了一些。数字变大意味着很多种可能有可能是CPU的需求变多了使用3和4中提到的vmstat或mpstat命令将可以进一步确认问题。
## **dmesg|tail**
```
$ dmesg | tail
[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request. Check SNMP counters.
```
该命令展示最近 10条系统消息。在这些系统消息中查找有可能引起性能问题的报错。上面的例子包括oom-killer和TCP丢弃了一个请求。
不能忘记这个步骤dmesg通常对诊断问题很有价值。
```
## **vmstat 1**
$ vmstat 1
procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
34 0 0 200889792 73708 591828 0 0 0 5 6 10 96 1 3 0 0
32 0 0 200889920 73708 591860 0 0 0 592 13284 4282 98 1 1 0 0
32 0 0 200890112 73708 591860 0 0 0 0 9501 2154 99 1 0 0 0
32 0 0 200889568 73712 591856 0 0 0 48 11900 2459 99 0 0 0 0
32 0 0 200890208 73712 591860 0 0 0 0 15898 4840 98 1 1 0 0
```
vmstat是虚拟内存统计(Virtual Memory Stat)的缩写vmstat(8)是一个通常可用的工具(最初是在之前的BSD时代创建的),它每行打印一行服务器关键统计的概览。
vmstat使用参数1运行意味着每1秒打印打印一次概览。命令输出的第一行展示的是从启动开始的平均值而不是最近一秒的平均值。因此跳过第一行除非您想学习并记住哪一列是哪一列。
要检查的列:
r在CPU上运行并等待回合的进程数。由于它不包含IO因此它比指示CPU饱和的平均负载提供了更多的信息。一个大于CPU核数的r值就是饱和的。
free空闲的内存单位的KB。如果计数很大说明服务器有足够的内存free -m命令将对空闲内存的状态有更好的说明。
si、so交换置入和交换置出。如果这两个值是非空说明物理内存用完了现在在使用交换内存了。
us、sy、id、wa、st这些是CPU时间的分类其是所有CPU的平均值。它们是用户时间、系统时间(内核)、空闲时间、等待IO和被偷窃时间被其它宾客系统进行使用或宾客系统隔离的驱动程序域Xen
通过将用户时间和系统时间这两个分类相加即可判断CPU是否繁忙。一定的等待IO时间说明磁盘有可能是性能瓶颈。你可以认为等待IO时间是另一种形式的空闲时间它提供了它是如何空闲的线索。
IO处理需要占用CPU系统时间。一个较高的CPU系统时间超过20%可能会很有趣有必要进一步研究也许内核在很低效地处理IO。
在上面的示例中CPU时间基本全在用户时间这说明应用程序本身在大量占用CPU时间。CPU的平均利用率也远远超过90%。这不一定是问题可以使用r列来检查饱和度。
## **mpstat -P ALL 1**
```
$ mpstat -P ALL 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
07:38:49 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:38:50 PM all 98.47 0.00 0.75 0.00 0.00 0.00 0.00 0.00 0.00 0.78
07:38:50 PM 0 96.04 0.00 2.97 0.00 0.00 0.00 0.00 0.00 0.00 0.99
07:38:50 PM 1 97.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00
07:38:50 PM 2 98.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00
07:38:50 PM 3 96.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.03
[...]
```
此命令显示每个CPU的CPU时间明细可用于检查不平衡的情况。单个热CPU说明是单线程应用程序在大量占用CPU时间。
## **pidstat 1**
```
$ pidstat 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
07:41:02 PM UID PID %usr %system %guest %CPU CPU Command
07:41:03 PM 0 9 0.00 0.94 0.00 0.94 1 rcuos/0
07:41:03 PM 0 4214 5.66 5.66 0.00 11.32 15 mesos-slave
07:41:03 PM 0 4354 0.94 0.94 0.00 1.89 8 java
07:41:03 PM 0 6521 1596.23 1.89 0.00 1598.11 27 java
07:41:03 PM 0 6564 1571.70 7.55 0.00 1579.25 28 java
07:41:03 PM 60004 60154 0.94 4.72 0.00 5.66 9 pidstat
07:41:03 PM UID PID %usr %system %guest %CPU CPU Command
07:41:04 PM 0 4214 6.00 2.00 0.00 8.00 15 mesos-slave
07:41:04 PM 0 6521 1590.00 1.00 0.00 1591.00 27 java
07:41:04 PM 0 6564 1573.00 10.00 0.00 1583.00 28 java
07:41:04 PM 108 6718 1.00 0.00 0.00 1.00 0 snmp-pass
07:41:04 PM 60004 60154 1.00 4.00 0.00 5.00 9 pidstat
```
pidstat有点像top的每个进程摘要但是会滚动打印而不是清屏再打印。这对于观察一段时间内的模式以及将所看到的内容复制&粘贴)记录到调查记录中很有用。
上面的示例显示两个Java进程要为消耗大量CPU负责。%CPU这一列是所有CPU核的总和1591%说明Java进程差不多消耗了16个核的CPU。
## **iostat -xz 1**
```
$ iostat -xz 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
73.96 0.00 3.73 0.03 0.06 22.21
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
xvda 0.00 0.23 0.21 0.18 4.52 2.08 34.37 0.00 9.98 13.80 5.42 2.44 0.09
xvdb 0.01 0.00 1.02 8.94 127.97 598.53 145.79 0.00 0.43 1.78 0.28 0.25 0.25
xvdc 0.01 0.00 1.02 8.86 127.79 595.94 146.50 0.00 0.45 1.82 0.30 0.27 0.26
dm-0 0.00 0.00 0.69 2.32 10.47 31.69 28.01 0.01 3.23 0.71 3.98 0.13 0.04
dm-1 0.00 0.00 0.00 0.94 0.01 3.78 8.00 0.33 345.84 0.04 346.81 0.01 0.00
dm-2 0.00 0.00 0.09 0.07 1.35 0.36 22.50 0.00 2.55 0.23 5.62 1.78 0.03
[...]
```
这是了解块设备(磁盘),应用的工作负载和产生的性能影响的绝佳工具。重点关注下面的指标:
- r/s、w/s、 rkB/s、 wkB/s这些是设备每秒交付的读取、写入、读取千字节和写入千字节。使用这些来表征块设备的工作负载。性能问题可能是由于向块设备施加了过多的工作负载。
- awaitIO的平均时间以毫秒为单位。这是应用程序所感受到的时间它包括IO排队时间和IO服务时间。大于预期的平均时间可能表示块设备饱和或设备出现问题了。
- avgqu-sz发给设备的平均请求数。值大于1可以表明已达到饱和状态尽管设备通常可以并行处理请求尤其是在多个后端磁盘所组成的前端虚拟设备的情况下
- %util设备利用率。这是一个表征繁忙度的百分比它表示设备每秒工作的时间。尽管它的值取决于设备但值大于60%通常会导致性能不佳也会通过await的值观察到。接近100%的值通常表示饱和。
如果存储设备是有许多后端磁盘组成的前端逻辑磁盘设备则100%的利用率可能仅意味着100%的时间正在处理某些IO但是后端磁盘可能远远没有饱和并且可能还可以处理更多的工作。
请记住性能不佳的磁盘IO不一定是应用问题通常可以使用许多技术以执行异步IO以便使应用程序不会被阻塞住而产生直接产生IO延迟例如预读和缓冲写入技术
## **free -m**
```
$ free -m
total used free shared buffers cached
Mem: 245998 24545 221453 83 59 541
-/+ buffers/cache: 23944 222053
Swap: 0 0 0
```
右边两列:
buffers缓冲区高速缓存用于块设备I / O
cached页面缓存由文件系统使用
我们只需要检查下它们的大小是否接近零。如果接近零的话这可能导致较高的磁盘IO可以使用iostat进行确认和较差的性能。上面的示例看起来不错每列都有较大的数据。
-/+ buffers/cache为已用和空闲内存提供较少让人产生混乱的值。Linux将可用内存用于高速缓存但是如果应用程序需要它们可以快速被回收。因此应以某种方式将缓存的内存包括在free列中这也就是这一行的所做的。甚至还有一个网站专门讨论了这种混乱。
如果在Linux上使用ZFS就像我们对某些服务所做的那么因为ZFS具有自己的文件系统缓存它们并不会反映在free -m的列中因此这种场景下这种混乱还将存在。所以会看到似乎系统的可用内存不足而实际上可根据需要从ZFS缓存中申请到内存。
## **sar -n DEV 1**
```
$ sar -n DEV 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
12:16:48 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
12:16:49 AM eth0 18763.00 5032.00 20686.42 478.30 0.00 0.00 0.00 0.00
12:16:49 AM lo 14.00 14.00 1.36 1.36 0.00 0.00 0.00 0.00
12:16:49 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:16:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
12:16:50 AM eth0 19763.00 5101.00 21999.10 482.56 0.00 0.00 0.00 0.00
12:16:50 AM lo 20.00 20.00 3.25 3.25 0.00 0.00 0.00 0.00
12:16:50 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
```
此工具可以检查网络接口的吞吐量rxkB/s和txkB/s作为工作负载的度量还可以检查是否已达到网络接口的限制。在上面的示例中eth0接收速率达到22MB/s即176Mbit/s远低于1Gbit/s的网络接口限制假设是千兆网卡
此版本还具有%ifutil用来指示设备利用率全双工双向这也是我们使用的Brendan的nicstat工具测量出来的。就像nicstat一样这个指标很难计算正确而且在本例中好像不起作用数据是0.00)。
## **sar -n TCP,ETCP 1**
```
$ sar -n TCP,ETCP 1
Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)
12:17:19 AM active/s passive/s iseg/s oseg/s
12:17:20 AM 1.00 0.00 10233.00 18846.00
12:17:19 AM atmptf/s estres/s retrans/s isegerr/s orsts/s
12:17:20 AM 0.00 0.00 0.00 0.00 0.00
12:17:20 AM active/s passive/s iseg/s oseg/s
12:17:21 AM 1.00 0.00 8359.00 6039.00
12:17:20 AM atmptf/s estres/s retrans/s isegerr/s orsts/s
12:17:21 AM 0.00 0.00 0.00 0.00 0.00
```
这是一些关键的TCP指标的摘要包括
- active / s每秒本地启动的TCP连接数例如通过connect
- passive/s每秒远程启动的TCP连接数例如通过accept
- retrans / s每秒TCP重传的次数。
主动和被动计数通常作为服务器TCP负载的粗略度量新接受的连接数被动和新出站的连接数主动。将主动视为出站将被动视为入站可能对理解这两个指标有些帮助但这并不是严格意义上的例如考虑从localhost到localhost的连接
重新传输是网络或服务器问题的迹象它可能是不可靠的网络例如公共Internet也可能是由于服务器过载并丢弃了数据包。上面的示例仅显示每秒一个新的TCP连接。
## **top**
$ top
```
top - 00:15:40 up 21:56, 1 user, load average: 31.09, 29.87, 29.92
Tasks: 871 total, 1 running, 868 sleeping, 0 stopped, 2 zombie
%Cpu(s): 96.8 us, 0.4 sy, 0.0 ni, 2.7 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 25190241+total, 24921688 used, 22698073+free, 60448 buffers
KiB Swap: 0 total, 0 used, 0 free. 554208 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20248 root 20 0 0.227t 0.012t 18748 S 3090 5.2 29812:58 java
4213 root 20 0 2722544 64640 44232 S 23.5 0.0 233:35.37 mesos-slave
66128 titancl+ 20 0 24344 2332 1172 R 1.0 0.0 0:00.07 top
5235 root 20 0 38.227g 547004 49996 S 0.7 0.2 2:02.74 java
4299 root 20 0 20.015g 2.682g 16836 S 0.3 1.1 33:14.42 java
1 root 20 0 33620 2920 1496 S 0.0 0.0 0:03.82 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:05.35 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:06.94 kworker/u256:0
8 root 20 0 0 0 0 S 0.0 0.0 2:38.05 rcu_sched
```
top命令包括我们之前检查的许多指标。运行它可以很方便地查看是否有任何东西与以前的命令有很大不同这表明负载是可变的。
top命令不太好的地方是随着时间的推移很难看到指标变化的模式这在提供滚动输出的vmstat和pidstat之类的工具中可能更清楚一点。如果您没有足够快地暂停输出Ctrl-S暂停Ctrl-Q继续在屏幕输出被top命令清除后间歇性问题的证据也可能被丢失了。

4
content/links/_index.md Normal file
View File

@ -0,0 +1,4 @@
+++
sort_by = "weight"
template = "links.html"
+++

6
content/links/link-1.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "Yon Zilch"
weight = 1
+++
[blog.yon.im/](https://blog.yon.im/)

6
content/links/link-2.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "diredocks"
weight = 2
+++
[blog.clickfling.top](https://blog.clickfling.top/)

6
content/links/link-3.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "Ice Year の位面"
weight = 3
+++
[blog.iceyear.eu.org](https://blog.iceyear.eu.org/)

6
content/links/link-4.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "Purkit's Blog"
weight = 4
+++
[purkit.lockey.icu/](https://purkit.lockey.icu/)

6
content/links/link-5.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "Milvoid"
weight = 5
+++
[milvoid.com/](https://milvoid.com/)

6
content/links/link-6.md Normal file
View File

@ -0,0 +1,6 @@
+++
title = "世纪大道 | 春风少年兄"
weight = 6
+++
[blog.0pt.icu](https://blog.0pt.icu/)

3
content/pages/_index.md Normal file
View File

@ -0,0 +1,3 @@
+++
render = false
+++

12
content/pages/about.md Normal file
View File

@ -0,0 +1,12 @@
+++
title = "About Me"
path = "about"
+++
## Welcome to dich' Blog!
用电子罗盘,转赛博核桃,勘电磁风水,寻网络龙脉
> 一个人应该能够给孩子换尿布、计划一次侵略行动、杀猪、驾驶飞船、设计建筑物、写诗、做会计账目、砌墙、接合断骨、照顾临终的人、执行命令、下达命令、与人合作、独立行动、解方程式、分析一个新问题、施肥、编程、做一餐美味的饭、高效地战斗、勇敢地死去。专业化是为昆虫准备的。 ——*罗伯特·海因莱恩*
有事请联系 admin@dich.bid

5
content/pages/archive.md Normal file
View File

@ -0,0 +1,5 @@
+++
title = "Archive"
path = "archive"
template = "archive.html"
+++

5
content/search/_index.md Normal file
View File

@ -0,0 +1,5 @@
+++
title = "Search"
sort_by = "weight"
template = "search.html"
+++

5
content/weekly/_index.md Normal file
View File

@ -0,0 +1,5 @@
+++
title = "Weekly"
sort_by = "date"
template = "weekly.html"
+++

135
content/weekly/zhoubao-1.md Normal file
View File

@ -0,0 +1,135 @@
+++
title = "谈天说地:狄奇周刊(一)"
date = 2024-06-13
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,暂定每周四进行更新.
<!-- more -->
# **事记**
## **一.[Google直接将广告嵌入视频避免被屏蔽](https://ourl.co/104471)**
据广告拦截软件 SponsorBlock 开发者发布的消息YouTube 正在测试直接将广告`从服务端注入到视频中`
这种技术对服务端的基础设施要求应该是非常高的,因为 YouTube 仍然`需要考虑个性化广告`,即每次需要将针对特定用户感兴趣的广告注入到视频流的特定位置。当然用户观看界面也需要做一些改变,因为进入广告片段后还需要提供能够给用户点击链接的交互选项,避免广告确实被用户看了,但感兴趣的用户没法直接点击广告内容。
那么有办法能够继续屏蔽这种视频流广告吗应该是有的SponsorBlock 认为既然 YouTube 需要在前端界面提供可点击的链接,那就必然需要加载某段代码用来标记广告频段出现的时刻,`如果能检测到视频流中的广告时刻,那么进行针对化的操作也可以跳过广告`,最简单的方式就直接快进这部分。
## **二.[国内Docker镜像站全部下架](https://sjtug.org/post/mirror-news/2024-06-06-takedown-dockerhub/1)**
SJTUG上海交通大学 Linux 用户组6月6日发布公告
>非常遗憾,接上级通知,即时起我们将中止对 dockerhub 仓库的镜像。docker 相关工具默认会自动处理失效镜像的回退,如果对官方源有访问困难问题,建议尝试使用其他仍在服务的镜像源。我们对给您带来的不便表示歉意,感谢您的理解与支持。
原公告`"接上级通知","因监管要求"`等字眼,现在已经被删除。随后,中科大及多家其他镜像站也接连停止服务。
据称,是有人上传了关于[涉政人物的AI语音合成器](https://hub.docker.com/r/xijinping615/xi-jinping-tts)的docker镜像。
随后发现原来去年就有了一个 "[AtomHub 可信镜像中心](atomhub.openatom.cn)",由开放原子开源基金会主导,`华为、浪潮、DaoCloud 、谐云、青云、飓风引擎以及 OpenSDV 开源联盟、openEuler 社区、OpenCloudOS 社区`等成员单位共同建设。
V2EX上的讨论:[如何评价新一代的国产可信 Docker 镜像中心 Atomhub](https://www.v2ex.com/t/1049091)
## **三.[Windows11更新推送安装微软电脑管家](https://www.ithome.com/0/770/258.htm)**
如果你的windows没有`关闭自动更新`,那么会被捆绑安装微软电脑管家。该软件提供多种语言,不过现阶段`只在中国市场`进行推送安装。理论上只要是系统区域设置为中国的设备接下来都会自动安装微软电脑管家,不需要经过用户的任何点击。
目前`可以在设置中卸载微软电脑管家`,但继续安装后续的更新就不知道微软是否还会继续给用户捆绑安装。
据反馈不少人对其持中立态度,因为该软件空间占用非常小且功能实用,不过笔者一向对`这些管家类软件抱警惕态度`
## **四.[Google Chrome 开始淘汰 Manifest V2 扩展](https://blog.chromium.org/2024/05/manifest-v2-phase-out-begins.html)**
从 2024 年 6 月 3 日起在 Chrome Dev、Canary 和 Beta 渠道,如果用户仍然安装有 Manifest V2 扩展,那么用户访问扩展管理页面 chrome://extensions 时会`显示警告信息`,通知他们 Manifest V2 扩展将很快不予支持。。短时间内禁用的 Manifest V2 扩展可以重新启用,但`未来将会被彻底禁用`
Manifest V3 受争议之处是它限制了 WebRequest API 的功能,用 declarativeNetRequest 替代了 WebRequest。广告屏蔽扩展如 uBlock Origin 会受到影响,因为它们使用 WebRequest 在广告下载前屏蔽其请求。`禁用 Manifest V2 扩展意味着 uBlock Origin 会被禁用。`
开发者已经释出了使用 Manifest V3 的精简版本 `uBO Lite`,其功能弱于原版。`原版未来只能在 Firefox 等浏览器上使用。`
>PS:利好Firefox系浏览器
## **五.[国产NAS绿联系统帮助文件惊现群晖内容](https://t.me/s/TestFlightCN?q=%E5%9B%BD%E4%BA%A7NAS+%E7%BB%BF%E8%81%94%E7%B3%BB%E7%BB%9F%E5%B8%AE%E5%8A%A9%E6%96%87%E4%BB%B6%E6%83%8A%E7%8E%B0%E7%BE%A4%E6%99%96%E5%86%85%E5%AE%B9)**
最近NAS赛道又被卷的火热,由于行业龙头群晖价格偏高,这几年国产 NAS 也是百花齐放,`联想、架那极空间、海康威视、绿联`等等纷纷入场。
5月23号绿联也是发布了自己最新的NAS系列产品,宣发力度非常大,吸引了很多用户购买。但用户使用的过程中发现了很多问题,比如 `CPU 温度过高,相册备份失败,甚至 App 账号注册登陆流程都没法顺利进行等等。`
`最让人绷不住的是使用手册上竟然直接出现了友商“群晖”的字样。`
6月3日晚上绿联被喷的把新 NAS 京东天猫全部下架,并发布了致歉信。
结合这个时间点,可以合理推测可能是领导层为了`赶 618 活动`,导致开发不得不硬着头带 BUG 上线。
## **六.[小米澎湃OS限制安装未知应用权限次数](https://t.me/zaihuapd/25516)**
小米的米柚自 MIUI 9+ (Based on Android 7+ \ SDK 27+) 在安装未知应用(侧载安装未在应用商店商家认证的应用)时,引入了安装应用未知来源需要 SIM 卡的限制;`安装未知应用权限每张SIM卡拥有一定次数的限制超限后无法申请该权限。`
>微博网友:那我要是不插卡呢?给不了权限!
其实这个安全性限制原生 Android 也有,当然类原生 Android 也有,只不过需要 SIM 卡限制是小米自己魔改加上去的。
```
# adb shell
adb shell settings put secure install_non_market_apps 1
adb shell appops set <package_name> REQUEST_INSTALL_PACKAGES allow
```
或者安装Termux并获取相应root权限后使用 Termux 终端,在 shell 交互窗口设置也行:
```
pkg install root-repo
tsu
settings put secure install_non_market_apps 1
appops set <package_name> REQUEST_INSTALL_PACKAGES allow
```
记得把<package_name>替换成相应的包名,比如 com.topjohnwu.magisk
 
## 七.[讯飞输入法服务器崩溃竟然无法离线使用](https://www.landiannews.com/archives/104314.html)
多名网友反馈讯飞输入法出现异常从晚上7点多开始`无法正常弹出键盘,点击提示则显示无法加载资源等`
要不是此次崩溃可能大家还没意识到讯飞输入法是完全依赖云端服务器的,即`无法在离线的情况下使用`,这个确实有些匪夷所思。
故障持续已经有两个小时,讯飞输入法官方没有发布回应,也没有完成修复;
讯飞输入法官方微博在用户评论中回复:
> 您好,非常抱歉给您使用带来困扰~ 讯飞输入法在配置端午节运营活动过程中出现bug导致部分用户出现客户端崩溃问题。输入法团队正在对此进行全力抢修6月5日晚会发布新版本修复问题新版本发布后、升级版本可恢复使用。 再次表示抱歉,感谢理解与支持~
另外根据网友反馈此次讯飞输入法崩溃只影响官方版,诸如小米定制版的讯飞输入法是正常的,这也可以看出来`定制版使用的可能不是讯飞的服务器,所以并没有发生崩溃`
> 所谓的"大数据"大头就在与输入法上传数据并推送个性化广告
# 文推
[咖啡简史](https://jandan.net/p/116763#/)
[数字记忆指南](https://invisible.school/digital-memories/)
[拟物图标的消失](https://en.rattibha.com/thread/1622721223561187328)
[何加盐|中文互联网正在加速崩塌](https://chinadigitaltimes.net/chinese/708143.html)
[Windows 设计史 01 | 从青涩到成熟Windows 1.0 - 95](https://sspai.com/post/87835)
[Windows 设计史 02 |「海王星」项目,「稳定」表象背后的求索](https://sspai.com/post/88506)
[Windows 设计史 03 | Windows XP摆脱机械拥抱自然](https://sspai.com/post/88722)
# 项目
[996忍者摸鱼站](https://996.ninja/)
[Ploopy耳机一套开源3D打印耳机](https://github.com/ploopyco/headphones)
[一个极简的RSS在线浏览工具](https://github.com/srcrs/rss-reader)

View File

@ -0,0 +1,57 @@
+++
title = "谈天说地:狄奇周刊(十)"
date = 2024-08-15
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[研究员Windows 系统防火墙无法阻止 IPv6 远程代码执行漏洞](https://x.com/XiaoWei___/status/1823532146679799993)**
根据赛博昆仑实验室研究员Wei透露的部分消息攻击者构造的IPv6数据包在到达防火墙进行数据处理之前就可能被触发因此仅通过开启系统的IPv6防火墙并不能有效阻止攻击。
结合该漏洞的特性这进一步验证了之前的推测即该漏洞可以用于在内网中进行横向攻击特别是通过内网IPv6地址实施攻击。由于部分场景下的内网设备长期无法进行系统更新该漏洞对这些没有网络隔离且长期无法更新系统的环境构成了更大的威胁。
## **二.[婚姻登记条例拟修订,结婚和离婚不再需要户口簿](https://weibo.com/1638782947/OskWtCNkJ)**
8月13日民政部发布了新的《婚姻登记条例》修订草案面向社会公开征求意见。草案对结婚和离婚程序进行了调整取消了户口簿的要求登记地点也不再受限。
此外新增了30天离婚冷静期的具体规定“离婚冷静期“期间任何一方可申请撤回并明确了隐瞒重大疾病可导致婚姻被撤销。草案还要求婚姻登记必须免费确保个人隐私保密并规定婚姻登记机关要提供婚姻辅导服务。这部分细则看全文
## **三.[韩国监管机构KakaoPay向支付宝擅自提供用户信息](https://m-cn.yna.co.kr/view/ACK20240813002700881?input=tw)**
韩国金融监督院8月13日表示韩国移动支付服务商 KakaoPay 近六年来未经用户同意向中国支付平台支付宝擅自提供了 4000 万名用户的 542 亿条个人信用信息。据悉,为了满足与苹果公司合作的先决条件,支付宝要求 KakaoPay 提供全体用户的信用信息。而 KakaoPay 未经用户同意就提供了支付宝所要求的全部信息其中甚至包括未使用过跨境支付服务的用户信息。根据双方合作内容KakaoPay 用户可在与支付宝签署支付服务协议的线上线下商店进行支付。
## **四.[华为HarmonyOS NEXT对Webview加入了风险网站检查API](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#enablesafebrowsing11)**
ArkTS API 11+ 可以启用检查网站安全风险的功能。开发文档显示违规和诈骗网站的检查是默认启用的,不能通过此接口关闭;风险网站的检查是默认关闭的,可以通过此接口开启或关闭。
违规和诈骗网站的检查会发送 URL 哈希前缀和网站域名到服务器做检测,风险网站的检查会发送 URL 哈希前缀和脱敏 URL删除 URL 的查询参数)到服务器做检测。
# **文推**
[text软考高级架构师备考记录](https://nekonull.me/posts/ruankao-architect/)
[2024年上半年无线路由器选购攻略](https://www.acwifi.net/27983.html)
[Exploring TLS certificates and their limits](https://0x00.cl/blog/2024/exploring-tls-certs/)
---
# **项目**
[基于 LaTeX 的简历生成器](https://ppresume.com)
[记录 5 个世纪技术与社会发展的巨型图谱](https://calculatingempires.net)
[免费的开源跨平台游戏引擎](https://github.com/cocos/cocos-engine)

View File

@ -0,0 +1,108 @@
+++
title = "谈天说地:狄奇周刊(十一)"
date = 2024-08-22
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[开源软件 Aria 被诈骗份子利用导致作者被跨省](https://github.com/AriaLyy/Aria/commit/16e1fddca5996c1b2aba8b3284a0389f372ccf0b)**
Aria 是一个高性能、轻量级、易于使用的文件下载框架,主要应用于 Android 平台,目前在 GitHub 上有超过 5600 个 Star。
Aria 开发者写道:“因 Aria 被诈骗分子使用,导致我被跨省,因此本项目源码永久删除。”
## **二.[巴基斯坦政府称使用VPN是导致该国网速变慢的原因反对者怀疑政府正在建墙](https://t.me/xhqcankao/12829)**
数周以来,巴基斯坦的互联网速度一直非常缓慢,但谁应该为此负责,这仍是一个有争议的问题。
活动人士称,国家正在建设``中国式的互联网防火墙``,以进一步控制网络空间。官员们对这些说法提出质疑,并将爬行速度降低的原因归咎于安全连接或 VPN 的广泛使用。关闭互联网来压制异议是巴基斯坦和亚洲其他地区监管机构的常见做法。
自去年前总理伊姆兰汗引发骚乱以来,政府``封锁了社交媒体平台``,限制了网速,争取公众支持的斗争从街头蔓延到了数字空间。信息技术国务部长沙扎·法蒂玛周日表示,政府并不是近期网络放缓的原因。法蒂玛女士表示,“大量人口”一直在使用 VPN“这给网络带来了压力导致互联网速度变慢”。
> VPN应用在巴西应用商店下架
包括NordVPN、ExpressVPN和Surfshark在内的数十款VPN应用已经从巴西的苹果应用商店下架。根据Top10VPN的研究主管Simone Magliano的报告``至少有30款VPN应用消失了``。著名的免费VPN提供商Proton VPN确认了这一问题并猜测可能是“系统故障或苹果在执行某种隐秘的审查命令。”
此事件发生之际,``X前称Twitter刚刚宣布关闭其巴西业务``,原因是该公司未遵守巴西最高法院法官亚历山德雷·德·莫赖斯的审查要求,否则其法律代表将面临逮捕的“秘密命令”。
## **三.[AMD发布Adrenalin 24.8.1驱动优化《黑神话悟空》等游戏并新增Radeon Anti-Lag 2技术支持](https://www.xiaopi.com/hangye/26728.html)**
AMD推出了最新的``Adrenalin 24.8.1 WHQL``驱动程序为《黑神话悟空》、《星鸣特攻》、《星球大战亡命之徒》以及《使命召唤黑色行动6》公测版等游戏提供支持。新版驱动还为《对马岛之魂导剪版》引入了``Radeon Anti-Lag 2``技术该技术能够在开启FSR3帧生成功能时在4K极高画质设置下降低RX 7800 XT显卡的延迟高达28%。同时,新版驱动``扩展了HYPR-Tune支持范围``为《使命召唤现代战争III》、《漫威蜘蛛侠重制版》和《漫威蜘蛛侠迈尔斯・莫拉莱斯》新增FSR 3自动配置并宣布HYPR-Tune支持HYPR-RX以启用``AMD FidelityFX``等游戏内技术。
## **四.[中国联通拒收电信CN2的国际路由](https://t.me/DMIT_INC/1041)**
据 DMIT 援引中国电信集团北京公司的消息中国联通现已确认拒绝接收任何来自中国电信CN2的国际路由。
据了解,该变化``影响中国联通用户接入CN2网络的能力``原先通过CN2 GIA的去程发生改变``回程目前未受影响``。中国电信计划通过海外与中国联通进行互联以解决此问题。
DMIT 称,已注意到 ``AS4809(CN2)、AS23764(CGT) 与 AS10099(联通国际) 之间的对等网络出现拥塞``,将接入香港、东京和洛杉矶的中国联通线路,以提高中国联通客户的网络质量。该运营商还重申了对 Pro 和 EB 系列产品网络质量的保证。
## **五.[iOS新Bug曝光四个字符可致iPhone崩溃](https://weibo.com/1642634100/OtpiTzEZX)**
网络安全研究员Konstantin 发现,一个新的字符漏洞可导致 iPhone 和 iPad 崩溃。在滑动到 App 库后,在搜索框中输入 "":: 四个字符将导致Springboard 重置iPhone 会返回到锁屏界面。重置并非完全重启iPhone 只需几秒钟即可恢复正常。
测试发现,只需要输入 "": 和任何其他字符即可触发崩溃;重置问题似乎仅出现在运行 iOS 17 的设备上iOS 18 设备上如此操作不会导致重置,但会出现一些奇怪的问题,例如字符消失和设置应用崩溃。
# **文推**
[论佼佼者](https://sliun.com/85.html)
[哪些事你去了北欧才知道](https://telegra.ph/%E5%93%AA%E4%BA%9B%E4%BA%8B%E4%BD%A0%E5%8E%BB%E4%BA%86%E5%8C%97%E6%AC%A7%E6%89%8D%E7%9F%A5%E9%81%93-08-16)
[“吃饱饭才多久?”](https://mp.weixin.qq.com/s/KamQs4fWDTCMubQ9En_ArA)
[【CDT百科】“历史的垃圾时间”是什么梗](https://chinadigitaltimes.net/chinese/710773.html)
[如何在没有屏幕的情况下安装家用 Linux 服务器?](https://v2ex.com/t/1065791#reply16)
[【读书记1487-1】周濂《正义的可能》我们应该如何生活](http://www.qncd.com/?p=10319)
[A Starters guide on recovering damaged and rotten CDs](https://secnigma.wordpress.com/2022/05/08/a-guide-to-recovering-damaged-and-rotten-cds/)
---
# **项目**
[快捷键大全](https://hotkeycheatsheet.com/zh)
[readme 文档如何写](https://readme.so/editor)
[博搜·Telegram导航](https://tg.xbosou.com/)
[自托管的食谱管理器和膳食计划器](https://github.com/mealie-recipes/mealie)
[3613 个公司高清 Logo 的收集网站](https://www.fey.com/marketing/logoss)
[一个提供性姿势的详细信息和指导的网站](https://sex-positions.online/zh-cn/)
[一个免费、开源、功能强大的登陆页面模板](https://github.com/huglemon/inwind-landing-page)
[免费和开源的机器翻译 API自托管支持离线 ](https://github.com/LibreTranslate/LibreTranslate)
[在shell中将sing-box/mihomo作为客户端运行](https://github.com/juewuy/ShellCrash)
[一个基于「 太微 TiddlyWiki 」的知识管理桌面应用](https://github.com/tiddly-gittly/TidGi-Desktop)
[一个开源的“即将推出”和 SaaS 平台和网站的等待列表页面](https://github.com/raqibnur/quick-waitlist?utm_source=gapis.money)
[Go语言写就的一个轻量级、自托管友好的 RSS 聚合器和阅读器](https://github.com/0x2E/fusion)
[基于自定义规则的番剧采集APP支持流媒体在线观看支持弹幕。 ](https://github.com/Predidit/Kazumi)
[一站式开源高质量数据提取工具支持PDF/网页/多格式电子书提取](https://github.com/opendatalab/MinerU)
[一个开源的跨平台文件浏览器,由用 Rust 编写的虚拟分布式文件系统提供支持](https://github.com/spacedriveapp/spacedrive)
[Huly — 多合一项目管理平台(替代 Linear、Jira、Slack、Notion、Motion](https://github.com/hcengineering/platform?tab=readme-ov-file)
[bytebase 为开发人员、DBA 和平台工程团队提供世界上最先进的数据库 DevOps 和 CI/CD](https://github.com/bytebase/bytebase)

View File

@ -0,0 +1,106 @@
+++
title = "谈天说地:狄奇周刊(十二)"
date = 2024-08-29
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[猴痘病毒被发现可以通过呼吸道飞沫传播](https://www.bilibili.com/video/av1856623583?p=1)**
据新华社报道泰国公共卫生部召开新闻发布会称该国发现了首例猴痘Ib变异株病例。此次发现的该种变异株``新增了可通过呼吸道飞沫等分泌物、皮疹、受感染物品等的传播途径``。此外,包括中国在内的多个国家已开启针对入境人员的防疫措施。
## **二.[微软“闯祸”Linux躺枪更新之后Linux打不开了](https://www.qbitai.com/2024/08/183019.html)**
两年前GRUB有个漏洞能绕过安全启动机制;``微软去修 Windows+Linux 的双OS用户的 GRUB 引导,修坏了``...
此次事件中受到波及的,是``Windows+Linux的双系统用户``。
安装更新后这些用户在启动Linux时会发生报错提示“出现严重错误”。
```
Verifying shim SBAT data failed: Security Policy Violation.
shim SBAT数据校验失败违反安全策略
Something has gone seriously wrong: SBAT self-check failed: Security Policy Violation.
出现严重错误SBAT自检失败违反安全策略
```
应急补救措施——
首先进入``BIOS关闭安全启动``目的是先进入到Linux系统。
之后利用``命令行把引发故障的SBAT策略删除``,然后重启让设置生效。
最后再次进入BIOS重新打开安全启动问题就暂时解决了。
## **三.[微软正式确认Windows 控制面板将被弃用](https://www.ithome.com/0/790/274.htm)**
微软一直致力于为 Windows 添加新功能,同时也会淘汰一些不再必要的旧功能。这些功能会被添加到 Windows 过时功能列表中,``最近的一个是 Paint 3D微软宣布其即将被淘汰``。与 Paint 3D 类似,微软似乎也希望尽快淘汰控制面板。
早在 2011 年,就有传闻称微软计划用``“PC 设置”取代控制面板``。虽然“PC 设置”的设计更加适合触摸操作,但控制面板仍然存在。
直到几天前,微软才在其网页上正式发布相关信息。在一个关于各种原生 Windows 配置工具的新支持页面上,微软终于表示,控制面板“正在被弃用,取而代之的是设置应用”。
> 控制面板是于 1985 年首次在 Windows 1.0 中引入的。
## **四.[Telegram 创始人帕维尔-杜罗夫在巴黎被捕](https://t.me/zaihua/26960)**
据法国媒体TF1 Info报道加密通讯公司 Telegram 的创始人兼首席执行官帕维尔·杜罗夫 (Pavel Durov) 于法国时间24日晚上 8 点(北京时间周日凌晨 2 时)左右在勒布尔热机场的停机坪上从私人飞机上下来时被捕。这位 39 岁的法俄混血男子由他的保镖和一名女子陪同。
根据通缉人员档案,杜罗夫``从阿塞拜疆直接抵达``。Telegram 创始人头上挂着法国司法警察局 OFMIN隶属于法国海关部门的国家反欺诈办公室签发的法国搜查令该搜查令在初步调查的基础上签发。
法国当局认为Telegram 缺乏审核、与执法部门的合作以及其提供的工具(一次性号码和加密货币)使其成为``贩毒、恋童癖和欺诈的帮凶``。但该搜查令只有当帕维尔·杜罗夫在法国国土上时才有效。
``当前ONAF 的调查人员通知了他并将其拘留``。他应该在本周六晚上被送交调查法官,然后周日可能会因多项罪行被起诉:恐怖主义、毒品、同谋、欺诈、洗钱、收受赃物、儿童犯罪内容等。
> Toncoin 价格 已下跌17.4%,部分交易所出现 20% 以上的剧烈跌幅
## **五.[无线充电新规9月1日起施行MagSafe/Qi2因频率冲突停售iPhone无线功率调整至7.5W](https://t.me/zaihua/26966)**
中国将于2024年9月1日起实施新的《无线充电电力传输设备无线电管理暂行规定》规定无线充电设备的工作频率和额定传输功率。MagSafe和Qi2协议使用的频率为360kHz不符合新规要求的频率范围可能面临停售。工信部明确指出``325-405KHz频段在中国不可用于无线充电设备``。苹果官网已更新iPhone的无线充电参数显示``额定传输功率为7.5W工作频率为127.7kHz``,符合新规。
苹果iPhone 15等机型目前``仍显示支持MagSafe与Qi2无线充电最高功率达15W``。新规施行后,不符合要求的设备将停止生产或进口,但``已生产或进口的设备可继续销售至报废``。新规对无线充电设备市场及苹果产品销售策略可能产生影响。
# **文推**
[靠打零工生活的年轻人挤在廉价青旅](https://telegra.ph/%E9%9D%A0%E6%89%93%E9%9B%B6%E5%B7%A5%E7%94%9F%E6%B4%BB%E7%9A%84%E5%B9%B4%E8%BD%BB%E4%BA%BA%E6%8C%A4%E5%9C%A8%E5%BB%89%E4%BB%B7%E9%9D%92%E6%97%85-08-27-2)
[月薪10万的人不想吃鼎泰丰了](https://telegra.ph/%E6%9C%88%E8%96%AA10%E4%B8%87%E7%9A%84%E4%BA%BA%E4%B8%8D%E6%83%B3%E5%90%83%E9%BC%8E%E6%B3%B0%E4%B8%B0%E4%BA%86-08-28)
[短篇漫画小狐狸化形记](https://telegra.ph/%E7%9F%AD%E7%AF%87%E6%BC%AB%E7%94%BB%E5%B0%8F%E7%8B%90%E7%8B%B8%E5%8C%96%E5%BD%A2%E8%AE%B0-08-23-2)
[普通人该如何认清当下的经济环境](https://telegra.ph/%E6%99%AE%E9%80%9A%E4%BA%BA%E8%AF%A5%E5%A6%82%E4%BD%95%E8%AE%A4%E6%B8%85%E5%BD%93%E4%B8%8B%E7%9A%84%E7%BB%8F%E6%B5%8E%E7%8E%AF%E5%A2%83-08-23)
[计算机学院的老师们的实际编程能力如何](https://telegra.ph/计算机学院的老师们的实际编程能力如何-08-22)
[终于可以愉快地扫描了Linux 扫描仪配置与使用攻略](https://sspai.com/post/91396)
[《一人企业方法论》第二版,也适合做其他副业(比如自媒体、电商、数字商品)的非技术人群](https://github.com/easychen/one-person-businesses-methodology-v2.0)
---
# **项目**
[网站图标下载器 ](https://www.faviconextractor.com/)
[开源的豆瓣替代品](https://github.com/neodb-social/neodb)
[微信公众号文章批量下载工具](https://github.com/qiye45/wechatDownload)
[Megalodon 的一个分支,功能丰富](https://github.com/LucasGGamerM/moshidon)
[Zen Browser基于firefox的新浏览器](https://github.com/zen-browser/desktop)
[Supersonic:自托管音乐服务器的轻量全功能跨平台桌面客户端](https://github.com/dweymouth/supersonic)
[Go 语言开发的个人阅读/观影/看剧/追番/游戏记录 Web 管理工具](https://github.com/scenery/mediax)
[Deku SMS 开源安卓短信工具,支持 Webhook、SMTP、FTP 转发短信|集成 RabbitMQ ](https://github.com/deku-messaging/Deku-SMS-Android)

View File

@ -0,0 +1,86 @@
+++
title = "谈天说地:狄奇周刊(十三)"
date = 2024-09-07
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[广东也来啦:数码家电以旧换新立打 8 折补贴 2000 元,合计 16000 元](https://www.ithome.com/0/792/649.htm)**
广州家电以旧换新补贴(京东平台)现已开始发放,包含``冰箱、洗衣机、电视、空调、电脑、热水器、吸油烟机、家用灶具``。
虽然名为“广州以旧换新”,但目前广东省内都可领取。
与北京补贴不同的是,本次``下单地址限广东省内``。
每人 8 个品类每种都可参与一次,单次至高补贴 2000 元,合计至高可减 16000 元。
本次活动于`` 2024 年 9 月 1 日开启,预计结束时间为 2024 年 12 月 31 日``。
## **二.[Linux Kernel 6.12 版预计将支持在崩溃后显示二维码 后续可以解码排查错误](https://www.landiannews.com/archives/105682.html)**
7 月份时红帽工程师基于 systemd 255 + 版的全屏显示错误消息功能为 Linux Kernel 开发崩溃后显示二维码选项,这与微软在 Windows 10/11 蓝屏死机后显示二维码有异曲同工之妙。
不过 Linux 与 Windows 在崩溃时显示的二维码内容则有本质区别,因为 Windows BSOD 显示的二维码实际就是微软帮助文档的链接,属于固定内容二维码。
Linux Kernel 的崩溃后显示二维码是``将崩溃日志生成二维码,这样崩溃日志不会被截断``,用户在必要的时候对二维码进行拍照以后后续解码内容分析崩溃的具体原因。
经过两个月的讨论后目前红帽工程师准备的代码``已经通过 DRM-Misc-Next 提交给 DRM-Next``,以便能够赶上 Linux Kernel 6.12 的合并窗口,如无意外的话 Linux Kernel 6.12 将是首个支持崩溃后显示二维码的内核版本。
值得注意的是显示二维码功能是``红帽工程师使用 Rust 语言编写的``,因此必须启用 Rust 内核构建后才能使用此功能,在构建中可以通过 ``DRM_PANIC_SCREEN_QR_CODE Kconfig`` 作为功能开关配置。
## **三.[国铁新规:列车有权拒绝“买短乘长”旅客继续乘车](https://www.163.com/dy/article/JBFVF0IO0514R9P4.html)**
9月1日2024版《中国国家铁路集团有限公司铁路旅客运输规程》简称《国铁集团客规》在铁路12306网站全文发布。特别的``第三十五条明确,旅客要求越过车票到站继续乘车时,须在原车票到站前提出``,在有运输能力的情况下列车可予以办理,核收越站区间的票款;``无运输能力时,列车有权拒绝旅客补票和继续乘车``。
有铁路工作人员此前介绍,平时铁路运能充裕,可以为旅客办理“买短乘长”补票。但买短乘长又往往集中出现在运能紧张的客流高峰时期,这时,工作人员会根据客流情况,决定是否办理越站补票手续。如果列车旅客过多影响到运行,就不会办理补票,“买短乘长”的旅客可能会被劝导下车。
## **四.[我国将建立统一电子烟交易管理平台,价格仍由市场决定](https://www.zaobao.com.sg/realtime/china/story20240902-4598807)**
烟草局计划建立一个``统一的电子烟交易管理平台``。该平台将执行统一标准,确保电子烟合法销售。电子烟、雾化物和烟碱生产企业、电子烟批发和零售商等各类电子烟市场主体应当通过平台进行交易。
同时坚持市场决定价格,建立完善主要由市场调节的电子烟产品价格形成机制。
此外,进口电子烟同一规格实行全国统一销售价格,并在平台上公开。
## **五.[谷歌已向 AOSP 推送安卓 15 源代码](https://t.me/xhqcankao/13185)**
今天,谷歌正式向安卓开源项目 (AOSP) 推送安卓 15 的源代码。安卓 15 将在未来几周内在受支持的 Pixel 设备上推出,并将在未来几个月内在``三星、荣耀、iQOO、联想、摩托罗拉、Nothing、OnePlus、Oppo、realme、夏普、索尼、Tecno、vivo 和小米``的精选设备上推出。谷歌在博客文章中表示,我们很自豪能够通过 AOSP 继续开展开源工作。开源允许任何人以安卓为基础进行开发和贡献,从而打造出更加多样化和创新的设备。
## **六.[互联互通:淘宝平台拟全面引入微信支付](https://t.me/xhqcankao/13188)**
从多位知情人士处获悉,淘宝平台``拟全面引入微信支付,成为阿里系平台与腾讯之间互通的标志性事件``。据了解淘宝打通微信支付在淘天集团内部属于保密项目该项目的筹备始于半年前由用户端基础工具团队在主要对接。今年6月手淘已有部分用户灰测使用微信支付不过仅支持购买部分商品时可选择。据了解淘宝接入微信支付这个项目淘天是更加积极推动的一方此举从业务到战略层面对阿里都有重大意义。
# **文推**
[Inside.git](https://jvns.ca/blog/2024/01/26/inside-git/)
[用软件定义无线电(SDR)做的 50 件事](https://wuminboke.site/2024/08/28/translated/50-things-with-sdr/)
[Rust 嵌入式开发ESP32 处理器)系列文章](https://blog.opsnull.com/rust-embedded/)
---
# **项目**
[Bangumi for Android - 适用于 bangumi.tv 的功能齐全的非官方 android 原生应用程序](https://github.com/xiaoyvyv/bangumi)
[使用 Shizuku 的出色 Android 应用程序精选列表](https://github.com/timschneeb/awesome-shizuku)
[使用ThinkPHP开发的开源发卡站模板](https://github.com/w-hehe/hmyk)
[学习音乐](https://www.musicca.com/zh)

View File

@ -0,0 +1,86 @@
+++
title = "谈天说地:狄奇周刊(十四)"
date = 2024-09-16
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[阿里云新加坡节点崩了,客服回应:新加坡机房出现火灾](https://www.nodeseek.com/post-158280-1)**
9月10日有消息称阿里云新加坡节点出现网络崩溃情况。
相关工作人员表示阿里云新加坡地域可用区C网络访问出现异常阿里云的工程师正在紧急处理中。该工作人员还补充道出现异常是由于新加坡机房出现火灾。
据了解阿里云成立于2009年是一家云计算和人工智能科技公司。
今年7月份阿里云也曾出现网络异常问题。彼时阿里云发布消息称阿里云监控发现上海地域可用区N网络访问出现异常经阿里云工程师紧急介入处理后于当日10:35完成网络切流调度后10:42访问异常问题恢复。
目前云服务ECS、对象存储、云数据库等仍然未恢复中断时间已超48小时。
此次事件导致如PikPak、Lazada东南亚最大电子商务平台、字节海外服务均受影响PikPak目前服务仍不稳定。
## **二.[微软 Azure 云服务和 Microsoft 365 发生重大服务中断](https://x.com/MSFT365Status/status/1834209876379042186)**
微软公司称用户可能无法从 AT&T 公司网络访问其 Azure 云服务,并正在调查可能发生的中断事件。微软还确认 Microsoft 365 服务目前已停止服务,该问题影响了 Teams、Outlook 以及更多服务。
据 Downdetector 数据,截至美国东部时间上午 8:58已报告约 21,000 起 Microsoft 365 中断事件。
## **三.[OpenAI发布o1系列模型AI推理能力迈向新高度](https://wallstreetcn.com/articles/3727873)**
2024年9月12日人工智能领域的领军企业OpenAI宣布推出全新的o1系列模型标志着AI推理能力的重大突破。这一系列模型专门设计用于解决复杂问题在科学、编程和数学等领域展现出前所未有的性能。
- 深度推理机制
o1系列的核心创新在于其独特的"深度思考"机制。通过先进的训练方法模型能够在生成回答前进行更全面、深入的推理过程。这种方法使AI能够
尝试多种解决策略
识别并纠正推理过程中的错误
逐步优化思考路径
- 性能评估
在严格的性能测试中o1系列模型展现出卓越表现
国际数学奥林匹克竞赛(IMO)资格考试o1模型正确率达83%远超GPT-4o的13%
Codeforces编程竞赛达到89百分位水平
物理、化学、生物学等领域:表现接近博士生水平
- 安全性提升
OpenAI为o1系列开发了创新的安全训练方法充分利用模型的推理能力来加强安全性
"越狱"测试o1-preview模型得分84分满分100分大幅领先于GPT-4o的22分
新的安全训练方法使模型能够更好地理解和应用安全准则
- o1-mini轻量级推理模型
为满足不同应用需求OpenAI同时推出o1-mini模型
运行速度更快成本降低80%
保留强大的推理和编程能力
适用于需要高效推理但不需要广泛世界知识的场景
# **文推**
[推荐系统如何让我们变得极端 - 中国数字时代](https://chinadigitaltimes.net/chinese/711062.html)
[为什么每个 User-Agent 都有 Mozilla 字样?](https://hexingxing.cn/user-agent-mozilla/)
---
# **项目**
[日语五十音字帖 - GitHub](https://github.com/2-3-5-7/gojuon-copybook)
[Rust 写的可滚动平铺窗口管理器](https://github.com/YaLTeR/niri)
[FerrumC 是一个Rust 编写的 Minecraft 服务器实现](https://github.com/sweattypalms/ferrumc)
[一个自托管的书签应用程序(链接、笔记和图像),具有基于 AI 的自动标记和全文搜索功能](https://github.com/hoarder-app/hoarder)

View File

@ -0,0 +1,68 @@
+++
title = "谈天说地:狄奇周刊(十五)"
date = 2024-09-21
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一. [微软考虑彻底封闭Windows内核](https://m.cnbeta.com.tw/view/1446435.htm)**
微软在今年7月的蓝屏危机后曾讨论过完全封闭 Windows 的内核。近期微软再次发布一篇文章称,「公司正致力于为内核模式之外的解决方案提供商提供更多安全功能」。
现在许多游戏都使用了内核级别的反作弊程序但是许多开发商关闭了Linux兼容层导致 Linux 无法通过 Proton 或是Wine来运行这些 Windows 游戏。随着主流系统更新,内核级的反作弊、客户端的反作弊或将逐渐淘汰,服务器端反作弊方案将成为新选择。不论是从游戏性能还是安全角度,或是设备系统兼容,这对于玩家来说都是一件好事。
## **二.[Intel大转型年底前裁掉15000人、剥离代工、德国厂暂停、减少2/3房产](https://news.mydrivers.com/1/1003/1003827.htm)**
当地时间9月16日Intel首席执行官帕特·基辛格 Pat Gelsinger 在最新的股东大会之后发布了一封公开信对于近期相关传闻进行了回应并全面概述了Intel的转型计划。
在8月初公布了糟糕的财报及财测数据并宣布全球裁员15%、削减资本支出到2025年削减100亿美元资本支出、暂停每季派息之后Intel受到了来自投资者、政府、内部员工、社会舆论等诸多方面的巨大压力。
由此也引发了诸如“Intel将出售晶圆制造业务”、“Intel将出售FPGAAltera业务”、“高通将收购Intel部分芯片设计业务”、“Intel将暂停海外晶圆厂建设”等一系列的传闻。
## **三.[Mozilla :将于 12 月 17 日关闭 Mozilla.social 实例](https://support.mozilla.org/en-US/kb/mozilla-social-faq)**
2024年9月18日——Mozilla 宣布将于2024年12月17日停止其社交平台 Mozilla.social 的实验,届时 Mastodon 实例将正式关闭。用户仍可在12月17日前继续使用 Mozilla.social并在此日期之前下载相关数据或将账户迁移至其他 Mastodon 实例。
12月17日之后Mozilla.social 的 Mastodon 实例将彻底关闭,平台上的所有内容和账户将无法再访问。不过,用户的 Mozilla 账户仍将继续有效,可以用于访问 Mozilla 的其他产品和服务。用户可以通过 Mozilla 官网管理其账户信息。
## **四.[华为正式弃用 Windows余承东华为 PC 将全部用鸿蒙](https://unwire.hk/2024/09/21/huawei-windows/fun-tech/)**
在近期的 Mate XT 交付仪式上,华为消费者业务 CEO 余承东说,华为的个人电脑产品将全面弃用 Windows 系统,转而采用自家研发的鸿蒙操作系统。主要受到美国制裁的影响,华为加速了技术自主化的进程。
余承东表示,华为已经能够完全替代美国的技术和元件,未来的新一代笔记本将提供与 Mac 类似的操作体验,旨在打造统一的生态系统,提升用户体验。鸿蒙系统的成功将直接影响华为在全球市场的竞争力。
## **五.[AWS 将 OpenSearch 移交给 Linux 基金会](https://www.21cto.com/article/4557874317683844)**
近日在奥地利举办的开源峰会Open Source Summit亚马逊宣布将其旗下OpenSearch开源项目捐赠给 Linux 基金会,该基金会已经成立 OpenSearch 软件基金会,用来支持该项目及其搜索和分析软件的研发。
OpenSearch 是 Elasticsearch 和 Kibana 的开源分支,现在已正式成为 Linux 基金会开源项目家族的一部分。Linux 基金会表示OpenSearch 被世界各地的软件开发人员用来构建搜索、分析、可观察性和矢量数据库应用程序,下载量业已超过 7 亿次。OpenSearch 软件基金会将与社区维护者和开发人员以及创始成员组织合作,支持 OpenSearch 的持续发展。
# **文推**
[如何无痛早起](https://www.geedea.pro/posts/%E5%A6%82%E4%BD%95%E6%97%A0%E7%97%9B%E6%97%A9%E8%B5%B7/)
[一个平庸的人,活着的意义是什么?](https://archive.is/8tF0O)
[磨合](https://sund.site/posts/2024/symbiosis/)
---
# **项目**
[一个收集了几乎所有苹果产品参数的网站](https://www.hubweb.cn/)
[Buttplug-一款开源的成人玩具控制工具](https://github.com/intiface/intiface-central/releases)
[一个轻量级的AI证件照制作算法,支持自托管](https://github.com/Zeyi-Lin/HivisionIDPhotos)
[GlazeWM 是受 i3wm 启发的 Windows 平铺窗口管理器](https://github.com/glzr-io/glazewm)

View File

@ -0,0 +1,72 @@
+++
title = "谈天说地:狄奇周刊(十六)"
date = 2024-09-28
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[CloudFlare WARP 支持 MASQUE 协议](https://www.cnblogs.com/jopny/p/18425477/warpplus-rework-20240922-MASQUE)**
近日CloudFlare WARP 客户端更新后带来了 MASQUE 协议支持用户可以在客户端设置菜单中进行切换。MASQUE 是基于 HTTP/3 和 QUIC 的新协议,能高效代理 IP 和 UDP 流量,同时保持性能和隐私。该协议还将使 WARP 的流量看起来像 HTTPS以避免被防火墙检测和阻止并符合 FIPS 标准的加密。
## **二.[12306新增车内换座功能](https://news.bjd.com.cn/2024/09/23/10911324.shtml)**
客服表示车内换座功能是近期刚上线的具体来看车内换座属于中转票的一种是分段售卖之前需要消费者一段一段去查现在是12306系统可以优先算出这一趟车的线路并做出提示用户可以分段购买同一趟车次的车票到了中转站在车上直接换座即可。“其实就相当于买了两段行程只不过两段行程是在同一辆车上不需要换乘。”客服表示。
上述客服称,价格方面,会比直达的车票贵一些,“因为是分段售卖,每段加起来的价格一般会比直接买全程价格高。”
12306平台另一客服也表示车内换座是为没抢到直达车票的用户提供的功能即使有优惠的话分段票价加起来也比直达的要贵。
中新经纬查询发现,并非每趟列车都有车内换座功能,且车内换座的价格确实比直达票价要贵一些。
以9月30日北京南到上海虹桥站6点10分发车的G101次高铁为例二等座直达票价为626元如果选择中转在南京南进行车内换座二等座的价格为504元北京南到南京南+153元南京南到上海虹桥共657元两者差31元一等座价格分别为1035元直达和1086元车内换座两者相差51元商务座价格为2318元直达和2432元车内换乘相差114元。
## **三.[OpenSSH 9.9 发布](https://www.openssh.com/txt/release-9.9)**
OpenSSH 9.9 新增并默认启用了对 mlkem768x25519-sha256 混合量子抗性密钥交换算法的支持。该算法巧妙地结合了 FIPS 203 模块格密钥封装机制 (ML-KEM) 和 X25519 椭圆曲线 Diffie-Hellman (ECDH),大幅提升了系统抵御量子计算威胁的能力。
## **四.[国家广电总局研发出能同时控制电视和机顶盒的遥控器](https://www.ithome.com/0/798/793.htm)**
在国务院新闻办公室今天举行的“推动高质量发展”系列主题新闻发布会上,国家广播电视总局透露已研发出能够同时控制电视机和机顶盒的新型三模通用遥控器,广电总局广播电视科学研究院也已经研制了 8 款只有 U 盘大小、可以隐藏在电视机后面的微型机顶盒。
目前中央和省级电视台已经全部实现了高清化播出,地市台频道高清化率已经超过 98%,全国已经开办了 9 个超高清频道。有线电视网络和 5G 协同发展,广电 5G 用户已经超过了 2800 万。网络视听持续繁荣,用户规模已经达到 10.68 亿。
> [中国广电总局有线电视和IPTV全面取消开机广告](https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=7313286333526553879)
# **文推**
[居家健身入门指南](https://blog.douchi.space/workout-from-home/#gsc.tab=0)
[为什么古埃及后来不再建造金字塔了?](https://daily.zhihu.com/story/9775545)
[云手机底层技术揭密 : Android系统启动与Magisk原理](http://www.yxfzedu.com/article/260)
---
# **项目**
[一个漂亮的面板](https://github.com/hslr-s/sun-panel)
[Vim Cheat Sheet](https://vim.rtorr.com/lang/zh_cn)
[UI 用于在 Linux 上使用 eBPF 嗅探网络流量](https://github.com/pythops/oryx)
[massCode 是一个为开发人员设计的开源代码片段管理器](https://github.com/massCodeIO/massCode)
[Slash 是一个开源的自托管平台,旨在帮助您组织、管理和共享最重要的链接](https://github.com/yourselfhosted/slash)
[风传 WindSend 用于在不同设备之间快速安全的传递剪切板,传输文件或文件夹](https://github.com/doraemonkeys/WindSend)

View File

@ -0,0 +1,96 @@
+++
title = "谈天说地:狄奇周刊(十七)"
date = 2024-10-05
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[小米澎湃 OS 国际版也开始限制解锁BL不少国外网友抱怨无法解锁](https://t.me/MlgmXyysd_bibilailai/1903)**
早前小米已经对澎湃 OS 国内版施加解锁限制,要想申请解锁 Bootloader 必须参与答题以及积极参与小米社区并在社区等级达到 5。
现在小米澎湃 OS 国际版也开始限制,倒不是非得参与什么社区,而是用户申请时总是提示名额已经用尽需要等待几天再申请。
在小米澎湃 OS 海外社区申请解锁的贴子中大量国外网友在抱怨小米施加的限制,显然这不可能是突然大量用户申请解锁导致名额用尽,而是小米故意施加的限制但没有公开披露。
有网友抱怨自己尝试了几个月都没有拿到解锁名额解锁自己的小米手机,抱怨小米给消费者制造麻烦,当然更大的问题是没有透明度,小米既没有公开披露为什么要限制也没有披露什么时候才能恢复正常。
对消费者来说目前最大的问题就是不能解锁那也无法刷机,部分玩家爱好者希望解锁 Bootloader 就是希望能够刷机或者对 ROM 进行微调,例如可以使用 Magisk+ROOT 权限获得更多功能。
小米暂时还未对此事进行回应,所以还不清楚小米为什么要施加限制,但考虑到现在已经不是刷机时代,小米应该也不至于担心是刷机造成自己的广告费流失吧。
## **二.[外卖骑手抢单外挂“死神”等被捣毁 涉案3000万元、112人被抓](https://news.mydrivers.com/1/1005/1005881.htm)**
9月28日消息公安部网安局发文称浙江省绍兴市新昌公安破获一起非法抢单外挂软件案涉案金额达3000余万元。
该作案团伙上下游分工明确,结构清晰,从软件开发到渠道销售、运维等,全链路均涉及,并由不同人员负责。
这个外挂软件名叫“死神”并先后迭代12个版本演化为“雷神”“波点”等多个软件在全国范围内均有兜售。
非法销售外挂软件的人员宣称外卖骑手花几十块钱买一个激活码后即可非正常抢单。此类外挂软件通过非法读取各类App的订单框架设置抢单条件实现自动化、定制化抢单功能。
在美团安全团队的支持配合下新昌公安经过对线索的全面收集和深入研判已抓获违法犯罪嫌疑人112名其中刑事打击14人行政处罚2人批评教育71人。
目前,该案中为首的犯罪嫌疑人被依法判处有期徒刑三年半,案件仍在进一步侦查办理中。
## **三.[日本兵库县一名50多岁的男性警司强迫21名部下下载Temu帮忙“砍一刀”被处以警告](https://t.me/xhqcankao/13876)**
根据兵库县警察公开的信息显示,兵库县警察局对本部安全科的一名 50 多岁男性警司持续要求 21 名下属在在线购物应用 Temu 并注册的行为进行了警告。该应用允许那些推荐朋友的人获得特殊福利当事人说“我就是想要一份礼物。”据县警方称3月至6月期间该男警司通过LINE等渠道向其手下的21名男警官发送信息称“免费注册”、“请帮我们获得5份免费礼物”等内容。他敦促他们注册成为 Temu 的会员。一些下属在与另一位上级协商后发现了这一事件。在县警察进行的一项调查中21 人中有 12 人表示他们对该应用感到“不舒服”15 人在注册后立即删除了该应用。
## **四.[规模之大刷新世界纪录Cloudflare 成功抵御 3.8Tbps 的 DDoS 攻击](https://www.ithome.com/0/799/942.htm)**
10 月 2 日消息Cloudflare 今日发文称,其 DDoS 保护系统自 9 月初以来一直在抵御一个超大规模的 L3/4 DDoS 攻击。
此次攻击一直持续了一整个月,期间包括一百多次超大规模攻击,其中最大一次攻击达到 3.8Tbps,是已公开过的最大规模的一次攻击。
Cloudflare 表示,这些攻击主要利用固定端口上的 UDP且源自全球各地占比较大的数据来于越南、俄罗斯、巴西、西班牙和美国。
此次攻击活动针对的是金融服务、互联网和电信等行业的多个客户。此次攻击活动的目标是带宽饱和以及在线应用程序和设备的资源耗尽。高数据包速率攻击似乎源自多种类型的受感染设备,包括 MikroTik 设备、DVR 和 Web 服务器,这些设备协同工作,向目标发送大量流量。高比特率攻击似乎源自大量受感染的华硕家用路由器,可能是利用了 Censys 最近发现的 CVE 9.8(严重)漏洞。
## **五.[FAT32支持到2TB了 但exFAT格式才是你的首选](https://news.mydrivers.com/1/1006/1006508.htm)**
8月16日微软推送了Windows 11 Build 27686预览版更新除了全新的Windows Sandbox Client预览版外在格式化命令从命令行格式化磁盘时FAT32的大小限制也从32GB提高到了2TB这意味着现在即使是2TB的U盘或移动硬盘也可以使用FAT32格式。
FAT32是1995年随Windows 95 OSR2一同发布的文件系统它继承了FAT16的优点并解决了后者单个分区大小不超过2GB的问题。理论上FAT32支持的存储容量可以达到16TB但Windows系统之前将其限制在32GB这主要是其原理上的缺陷。
一方面FAT32几乎都用在U盘、存储卡等移动存储设备硬盘从WindowsNT后开始逐步普及NTFS而早期这些移动存储设备容量普遍偏小如果默认的簇偏大就会造成磁盘空间的浪费即使小到几个字节的超微型程序也会占用完整的32KB存储空间所以微软才做出如此的限制。
除此之外FAT32在原理方面的缺陷还容易产生严重的文件碎片从而影响读写速度这也是Windows95/98操作系统内置磁盘碎片清理的原因。不过FAT32无法处理超过4GB的单个文件这对于高清视频、大型数据库或虚拟机镜像等应用场景来说是致命的。
虽然NTFS克服了上述的问题同时还拥有极高的安全性但基本仅限于Windows系统使用其他的操作系统例如macOS、Linux等无法直接读写而数码相机、智能手机和平板电脑也不支持因此FAT32依然是移动设备最常用的文件系统。
为了解决FAT32存在的问题并适应日益增长的数据存储需求微软于2006年推出了exFATExtended File Allocation Table但直到近些年才被发扬光大例如一部1080P的蓝光电影普遍超过10GB这时候除了NTFS可用的磁盘格式也只能是exFAT了。
exFAT保持了与多种操作系统的良好兼容性尤其是在日常生活中移动硬盘、U盘和存储卡等经常会遇到需要跨越不同平台进行数据交换的情况而exFAT凭借其出色的跨平台兼容性和高效稳定的特性成为了许多用户的首选几乎所有的操作系统和设备都能完美支持。
更重要的是exFAT可以支持的最大卷尺寸几乎是无限的即使是多TB级别的硬盘也能被有效利用而且不受限于4GB的天花板用户可以轻松地传输任何大小的媒体文件或其他类型的大文件。同时更先进的算法极大减少了磁盘碎片产生的可能性提升了整体效率。
FAT32曾经是许多人记忆中不可或缺的一部分但毕竟廉颇老矣即使分区限制提升到了2TB也无法有效满足需求一方面是单个多媒体文件早已超过4GB另一方面移动固态硬盘的容量也已经达到了8TB因此exFAT格式才是跨系统、跨平台移动存储的唯一选择。
# **文推**
[Linux 下的字体调校指南](https://szclsya.me/zh-cn/posts/fonts/linux-config-guide/)
[Make - 独立创造者小书 读书笔记](https://www.owenyoung.com/blog/books/make/)
[一文讲清CPE、MiFi和物联卡是「流量自由」还是「坑蒙拐骗」](https://ygxz.in/dairy/4541/)
---
# **项目**
[《动手学深度学习》](https://zh.d2l.ai/)
[UniGetUI包管理器的图形界面。可以被糟糕地描述为管理包管理器的包管理器](https://github.com/marticliment/UniGetUI)
[功能齐全的本地 AWS 云堆栈。离线开发和测试您的云和无服务器应用程序](https://github.com/localstack/localstack)
[合并 UT 词典将多个 Mozc UT 词典合并为一个](https://github.com/utuhiro78/merge-ut-dictionaries)

View File

@ -0,0 +1,70 @@
+++
title = "谈天说地:狄奇周刊(十八)"
date = 2024-10-13
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[英国移交查戈斯群岛主权至毛里求斯ccTLD .io 或将被废弃。](https://t.me/outvivid/4602)**
- io 是 ISO 分配给英属印度洋领地 (British Indian Ocean Territory, BIOT) 的国家编码; .io 亦被分配为此地区的 ccTLD。
- 由于 IO 在计算机概念中的重要性 (Input/Output).io 域名被大量科技类企业及站点所使用。
- 在 .su (前苏联) 和 .yu (南斯拉夫) 的废弃乱象后IANA 出台了更严格的 ccTLD 废弃流程,而这套流程即将适用于 .io。
## **二.[Windows 11 24H2 问题导致8.63GB的更新缓存无法清理](https://t.me/xhqcankao/14097)**
除了光标消失问题Windows 11 24H2 更新还会导致创建一个无法使用磁盘清理删除的 8.63GB 更新缓存。虽然 Windows 更新缓存非常正常并且在磁盘清理或存储清理等工具中可见,但 Windows 11 24H2 中的一个奇怪错误阻止了用户清除更新缓存或文件。磁盘清理和存储设置尝试删除更新缓存文件,但不起作用,缓存一直占用高达 8.63 GB 的存储空间。Windows 11 修复安装也无法解决此问题,但全新安装确实可以解决问题。微软公司表示,已经注意到用户的反馈,并计划在即将发布的更新中发布修复程序。
## **三.[Android 将推出官方 Linux 终端应用](https://www.androidauthority.com/android-linux-terminal-app-3489887/)**
Google 正在为 Android 开发一个官方的 Linux 终端应用。这个应用将允许用户在 Android 设备上运行 Linux 命令,类似于 Chromebook 上的 Crostini。
开发人员可以通过开发人员选项启用终端应用程序,并将在虚拟机中安装 Debian。
## **四. [海康威视进行大规模人员优化,或影响上千员工](https://weibo.com/1642634100/OB39Foij2)**
海康威视正在实施大规模的组织调整32个研发区域将收缩至12个预计裁员规模将超过1000人研发部门受影响最为严重。部分被裁员工透露裁员会有“N+2”的赔偿方案部分地区如湖南已经完成裁员杭州总部尚未开始。
近年来公司营收和净利润增速下滑2024年第二季度净利润同比下降10.7%,低于市场预期,增收不增利的局面尤为突出。软件业务收入占比下降,进一步加剧了公司的增长压力。
# **文推**
[各种限流算法的可视化对比](https://smudge.ai/blog/ratelimit-algorithms)
[各种负载均衡策略的可视化对比](https://samwho.dev/load-balancing/)
[输出我做独立开发和对互联网的一些思考](https://www.icebeer.top/)
[内存是怎么映射到物理地址空间的?内存是连续分布的吗? ](https://telegra.ph/%E5%86%85%E5%AD%98%E6%98%AF%E6%80%8E%E4%B9%88%E6%98%A0%E5%B0%84%E5%88%B0%E7%89%A9%E7%90%86%E5%9C%B0%E5%9D%80%E7%A9%BA%E9%97%B4%E7%9A%84%E5%86%85%E5%AD%98%E6%98%AF%E8%BF%9E%E7%BB%AD%E5%88%86%E5%B8%83%E7%9A%84%E5%90%97---%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-10-09-5)
---
# **项目**
[自己动手写 Git ](https://wyag-zh.hanyujie.xyz/docs/1.-%E5%BC%95%E8%A8%80.html)
[好看的终端工具](https://charm.sh/libs/)
[各品牌手机root情况汇总](https://github.com/KHwang9883/MobileModels/blob/master/misc/bootloader-kernel-source.md)
[在终端里面看天气](https://github.com/chubin/wttr.in)
[Lem 是专为 Common Lisp 调整的编辑器/IDE](https://github.com/lem-project/lem)
[一个漂亮的windows皮肤](https://github.com/Runixe786/MD3-Windows)
[在Minecraft 里跑一个linux | Linux in Minecraft](https://github.com/Snektron/linux-in-minecraft)
[一款适用于班级多媒体屏幕的课表的信息显示工具,可以一目了然地显示各种信息](https://github.com/ClassIsland/ClassIsland)

View File

@ -0,0 +1,71 @@
+++
title = "谈天说地:狄奇周刊(十九)"
date = 2024-10-23
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[Win 11 24H2 更新导致部分西数SSD用户蓝屏](https://www.windowslatest.com/2024/10/15/windows-11-24h2-causing-bsods-microsoft-will-reportedly-halt-update-for-more-pcs/)**
Windows 11 24H2 更新导致某些 PC 崩溃并出现蓝屏死机 (关键进程已死亡)。微软已经意识到了这一点,并计划暂停今年在受影响硬件上的更新。据透露,微软已经意识到少数搭载西部数据特定 SSD 的设备可能会遇到蓝屏死机错误的问题。蓝屏死机与存储驱动程序和 RAID 控制器有关。WD SN770 会提供 200MB 主机内存缓冲区 (HMB),而 23H2 只会分配 64MB 所以没有问题,然而 24H2 会分配完整的 200MB 并导致蓝屏死机错误“关键进程已死亡”。用户虽然可以通过设置注册表“HMBAllocationPolicy = 0”关闭 HMB 来缓解该问题,但可能会影响硬盘性能。
## **二.[Ubuntu诞生20周年:Canonical发布了即将到来的24.10版本——它一如既往的出色](https://ubuntu.com/20years)**
The story of Ubuntu is a story written by many hands. This page is a tribute to our community, partners and Canonical staff who have all given a piece of themselves to making this open source project thrive. Thank you to all of you.
Ubuntu的故事是由许多人书写的故事。 此页面是向我们的社区、合作伙伴和 Canonical 员工致敬,他们为使这个开源项目蓬勃发展做出了自己的贡献。 谢谢大家。
Above all, its a celebration of what Ubuntu has achieved so far, and an invitation to collaborate with us in delivering an even faster pace of innovation in the future.
最重要的是,这是对 Ubuntu 迄今为止所取得的成就的庆祝,并邀请我们与我们合作,在未来提供更快的创新步伐。
## **三.[Linux 内核将数名与俄罗斯联邦相关的贡献者从维护者列表中移除](https://lwn.net/Articles/995186/)**
日前Linux 内核主要维护者之一 Greg Kroah-Hartman (Greg K-H) 提交了一项不寻常的“文档”更新,将数名具有 <.ru> 顶级域名邮箱的维护者,和一名明确为俄罗斯身份的维护者从 MAINTAINERS维护者名录文件除名。
这一提交已于上周日被 Linus Torvalds 拉取并包含于 6.12-rc4 版本的代码中。
Greg K-H 并未详述这项更新的具体原因,仅含糊其辞地表示该更改是“由于某些合规性要求”,并指出“(相关人员)提供充足文档后,方可回归(维护者名录)”。
相关的维护者移除方式相当暴力,其中部分子系统由于唯一维护者使用 <.ru> 顶级域名邮箱,整个子系统都被从 MAINTAINERS 文件中移除,这之中不乏诸如 UFS 文件系统和 PPTP 驱动等重要且被广泛使用的子系统。由于 Linux 内核开发流程完全基于邮件列表进行,当 MAINTAINERS 文件中移除相关维护者后,也就意味着与相关子系统的补丁或沟通将不再被发送至维护者的邮箱,乃至相关的邮件列表。这很可能会造成许多补丁“石沉大海”;而如果某个子系统未得到充分维护,那么其被从内核中移除也只是时间问题了。
通常而言Linux 内核补丁除了发送至邮件列表外还需要抄送与之相关的人士如子系统维护者和活跃贡献者并且经过讨论和审阅后才会被拉取合并。然而Greg K-H 似乎刻意绕过了这部分流程,仅仅将补丁发送至流量最大、几乎不会有人认真阅读每封邮件的 patches@lists.linux.dev 列表,并于仅仅两天后就向 Linus Torvalds 发起拉取请求,而 Torvalds 亦未对相关修改提出质疑和意见便拉取合并这笔更改了。
考虑到 Linus Torvalds 与 Greg K-H 均受雇于 The Linux Foundation后者为注册在美国的 501(c)(6) 组织,“某些合规性要求”为何显而易见。
截至发稿时Greg K-H 尚未回应邮件列表上的相关质询。无论结果为何,这都将是 Linux 内核社区历史上最为耻辱的提交之一。
## **四.[RackNerd 和 CloudCone 服务出现中断](https://t.me/vps_xhq/662)**
RackNerd 服务状态显示其位于洛杉矶DC-02 所在的大楼出现火警洛杉矶消防局因此切断了供电DC-02的所有服务器受到影响。RackNerd 强调该公司服务器所在楼层没有火灾,因此数据是安全的。
据了解RackNerd DC-02由跨国宽带网络服务提供商 MultaCom 直接运营。另外一家运营商 CloudCone 也在此处托管有大量服务器。今天CC同样出现了大面积服务中断截止目前该公司尚未发布通告。
# **文推**
[图解网络协议系列](https://tls13.xargs.org/)
[MySQL的性能优化](https://advancedmysql.github.io/The-Art-of-Problem-Solving-in-Software-Engineering_How-to-Make-MySQL-Better/)
---
# **项目**
[出色的网络安全手册](https://github.com/0xsyr0/Awesome-Cybersecurity-Handbooks)
[egos-2000 :仅用 2000 行代码就实现了教育操作系统的每个组件](https://github.com/yhzhang0128/egos-2000)
[海狸笔记](https://github.com/Beaver-Notes/Beaver-Notes)
[开源免费采集 HTTPS 流量软件 ProxyPin支持全平台系统](https://github.com/wanghongenpin/network_proxy_flutter)
[适用于 Windows 10/11 的通用窗口升频器](https://github.com/Blinue/Magpie/releases)

View File

@ -0,0 +1,87 @@
+++
title = "谈天说地:狄奇周刊(二)"
date = 2024-06-20
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,暂定每周四进行更新.
<!-- more -->
# **事记**
## **一.[宁德时代施行 896 工作制,向员工发出“奋斗 100 天”号召](https://m.sohu.com/a/786849533_120341130)**
近日一份文件显示宁德时代向员工发出了“奋斗100天”的号召。即符合条件的员工从6月12日起施行896的工作日即早上8点上班晚上9点下班每周工作6天共“奋斗”100天。
另外还有补充通知说明外籍员工不强制按照他们的意愿。据了解此次已不是第一次宁德时代号召“奋斗100天”早在2022年的一篇报道中宁德时代就被提到奋斗100天已成常态化。
> 宁德时代内部员工回应“896工作制”
今日有消息称宁德时代向员工发出了“奋斗100天”的号召即符合条件的员工从6月12日起施行“896”的工作日即早上8点上班晚上9点下班每周工作6天共“奋斗100天”。有宁德时代内部员工对财联社记者表示确有此事上周五部门开会口头通知此事并表示“之前是也要加班但不强制到九点。”另有知情者透露该号召是针对一定级别以上员工并非所有员工。截至发稿前宁德时代官方尚未对财联社记者给予回复。
## **二.[国产游戏《黑神话:悟空》再次登顶](https://finance.sina.com.cn/tech/roll/2024-06-19/doc-inazhmec4075079.shtml)**
6月18日Steam平台最新一周销量榜出炉6月11日-6月18日国产游戏《黑神话悟空》再次登顶达成全球二连冠。而在前一日晚间《黑神话悟空》在京东开启第二轮PC实体版预售几乎秒售罄与第一轮情况相同。
根据官方信息《黑神话悟空》PC实体豪华版售价820元限量20000套收藏版售价1998元限量10000套。目前豪华版预约人数已超过20万人收藏版预约人数已超过41万人。
这款游戏的开发商游戏科学成立于2014年由原腾讯《斗战神》网游项目核心成员冯骥和杨奇等人创立其中冯骥是《斗战神》项目的主策划。
## **三.[618手机战绩出炉苹果靠降价登顶小米紧随其后](https://t.me/xhqcankao/11236)**
在采取更加大力度的降价策略后苹果继续把持京东相关排行榜的第一位。截至19日6点18分在京东618手机竞速榜上苹果拿下了手机品牌销量与销售额的双料第一。单品方面其iPhone 15 Pro Max、iPhone 15 Pro以及iPhone 15分别拿下第一、第二和第四。
过去半年来苹果已多次以官方名义降价促销在竞争激烈的中国市场“贴身肉搏”。事实证明这一策略收效甚好。苹果之外小米再次拿下国产品牌阵营第一其在京东、天猫、拼多多、抖音、快手等平台上均为国产手机销量及销额的双第一。小米在今年618中出现了明显增幅。截至18日24时小米618大促全渠道累计支付金额达到263亿元创出其历年大促的新纪录。
## **四.[安卓15新功能自动删除效果不佳的生物识别模型](https://t.me/xhqcankao/11208)**
最新的 Android 15 测试版中操作系统框架中的字符串显示,系统会自动检测面部或指纹模型何时效果不佳,并删除它们,然后提示用户重新设置。将显示一条通知,提示您的面部或指纹模型“运行不正常,已被删除。请重新设置以使用您的脸部或指纹解锁手机”。由于安卓只允许注册一个面部模型,因此重新注册面部时显示的通知与重新注册指纹时显示的通知略有不同,但功能上没有区别。目前尚不清楚系统是如何判断生物识别数据效果不佳的,甚至不确定是否在最新的 Android 15 测试版中上线。
## **五.[法国法院下令谷歌、Cloudflare 和思科的公共DNS屏蔽指定的盗版网站](https://t.me/xhqcankao/11166)**
法国巴黎法院在5月份应版权方要求命令谷歌、CloudFlare 和思科在其公共 DNS 系统里屏蔽约117个盗版网站域名。此次屏蔽的网站主要涉及的版权内容是英超联赛和欧冠联赛提交申请的版权方则是 Canal+,该版权方还要求法国当地 ISP 即网络运营商也通过 DNS 系统屏蔽这些域名。通过相关公开数据谷歌代表律师认为这大约影响了800多名法国用户所以实际影响可以说微乎其微或者说完全没有。
## **六.[上海地铁一男子持刀和人发生肢体冲突后续:已被警方刑事拘留](https://www.epochtimes.com/gb/24/6/19/n14273007.htm)**
19日上海市公安局城市轨道和公交总队官方微博发出通报称早上8时28分轨交9号线合川路站内发生一起持刀伤人案。54岁犯罪嫌疑人沈某行凶后导致3人受伤。沈某被抓。
网传视频显示,地铁内多处有血迹,其中一名男子倒地,多名工作人员互相呼叫、前来包扎施救。现场有的民众快速离开,有的在远处围观。
网民猜测“54岁中年失业男上次吉林市北山公园那个也是55岁中年失业男。”网民所说“吉林市北山公园”事件市指6月10日美国爱荷华州康奈尔学院Cornell College4名教师在吉林省吉林市北山公园被刺伤。行凶者为55岁吉林市龙潭区男子崔某某。
# **文推**
[113 自行车系列2 组成自行车的五大系统](http://ddw2019.com/113)
[真实的硅谷是怎么样的?](https://telegra.ph/%E7%9C%9F%E5%AE%9E%E7%9A%84%E7%A1%85%E8%B0%B7%E6%98%AF%E6%80%8E%E4%B9%88%E6%A0%B7%E7%9A%84-06-14)
[一个离谱但有效的锻炼方法,比运动轻松多了!](https://telegra.ph/%E4%B8%80%E4%B8%AA%E7%A6%BB%E8%B0%B1%E4%BD%86%E6%9C%89%E6%95%88%E7%9A%84%E9%94%BB%E7%82%BC%E6%96%B9%E6%B3%95%E6%AF%94%E8%BF%90%E5%8A%A8%E8%BD%BB%E6%9D%BE%E5%A4%9A%E4%BA%86-06-09-3)
[那些原本是废话的常识|小学生吐槽食堂之后:看,社会又来教“做人”了](https://chinadigitaltimes.net/chinese/709013.html)
# **项目**
[飞鱼](https://github.com/idootop/feiyu-player) : 一个漂亮的跨平台视频播放器,支持docker部署。
[Nullboard](https://github.com/apankrat/nullboard) : 是看板/任务列表管理器的极简风格,设计紧凑、可读且易于使用。单页 Web 应用程序 - 只有一个 HTML 文件、一个古老的 jQuery 包和一个 webfont 包,可以完全离线使用。
[OnionPlay](https://f830fdf3-afe8acc3.onionplay.se/) : 一个免费提供最新电影和电视剧在线播放的网站,无广告干扰。
[Z-Library图书馆](https://zlibrary.st/) : 可以使用的官方域名大全。
[开源大模型食用指南](https://github.com/datawhalechina/self-llm?tab=readme-ov-file) : 基于Linux环境快速部署开源大模型。
[中小学人教版教材下载](http://book.chat4ai.top/) : 内容全面,速度快
[小初高电子教材免费下载页(WEB在线下载)](https://meta.appinn.net/t/topic/57544) : 无需登陆,下载稍慢,次数有限

View File

@ -0,0 +1,59 @@
+++
title = "谈天说地:狄奇周刊(二十)"
date = 2025-01-25
[taxonomies]
tags = ["谈天说地"]
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[哔哩哔哩大会员限制只能同时2个终端使用](https://www.bilibili.com/blackboard/big-protocol.html)**
近日,哔哩哔哩对大会员服务协议内容进行了更新和优化,更新版本主要针对使用限制的情形相对应的条款进行调整:(一) 同一账号同一时间最多可以在2个终端设备使用会员服务终端设备包括但不限于手机端、电脑端、平板电脑端、网页端等 (包括小程序) 以及上述终端相应的网页端;(二) 同一账号在手机端24小时内至多支持在2个设备上使用会员服务(三) 超过上述范围使用的,哔哩哔哩大会员将会根据情况中止或终止对您提供的服务,且哔哩哔哩大会员保留采取进一步措施的权利,包括但不限于追偿损失等。
## **二.[7-Zip再曝高危漏洞](https://www.cve.org/CVERecord?id=CVE-2025-0411)**
近日7-Zip被曝出编号为CVE-2025-0411的高危漏洞该漏洞允许远程攻击者绕过Windows的“网络标记”Mark-of-the-Web, MOTW保护机制从而在受影响的系统上执行任意代码。此漏洞影响24.07及之前的所有7-Zip版本建议用户尽快升级至24.09版本以修复漏洞,确保系统安全。
## **三.[NVIDIA CUDA将「冻结」三大老架构](https://www.cnbeta.com.tw/articles/tech/1473990.htm)**
NVIDIA CUDA将「冻结」三大老架构
NVIDIA在最新的CUDA 12.8开发包更细日志中明确表示针对Maxwell、Pascal、Volta三大老架构的支持已经完成了所有功能特性未来的新版本中将处于「冻结」状态。CUDA开发包仍会继续支持它们但不会有任何新功能。
## **四.[微软E5开发者订阅已经全球下架](https://linux.do/t/topic/385888)**
据用户反映并通过微软客服专员证实微软已在全球范围内下架E5开发者订阅。
此消息意味着长期以来被许多用户视为免费网盘福利的E5订阅及其附带的大容量云存储空间即将成为历史。
# **文推**
[自洽的程序员](https://self-consistent-coder.vercel.app/)
[系统设计面试:内幕指南](https://learning-guide.gitbook.io/system-design-interview)
[停服、倒闭,一家被大厂抄袭的小公司之殇](https://telegra.ph/%E5%81%9C%E6%9C%8D%E5%80%92%E9%97%AD%E4%B8%80%E5%AE%B6%E8%A2%AB%E5%A4%A7%E5%8E%82%E6%8A%84%E8%A2%AD%E7%9A%84%E5%B0%8F%E5%85%AC%E5%8F%B8%E4%B9%8B%E6%AE%87-01-22)
# **项目**
[Quant Wiki 中文量化百科 ](https://quant-wiki.com/)
[哔哩哔哩账号备份](https://github.com/hzhilong/bilibili-backup/releases)
[用 nextUI 写的阅读体验更好的 Miniflux 第三方 Web 前端](https://github.com/electh/nextflux)
[Serial Studio能够与串行端口、网络套接字和 MQTT 代理进行交互](https://github.com/Serial-Studio/Serial-Studio)
[ Ghostty 是一款快速、功能丰富且跨平台的终端仿真器,它使用平台原生 UI 和 GPU 加速。](https://github.com/ghostty-org/ghostty)
[一款无服务端的多协议云盘文件上传和管理应用支持多种存储协议包括本地文件、FTP、SFTP、S3、SMB、Webdav等 ](https://github.com/honmaple/maple-file/)

View File

@ -0,0 +1,74 @@
+++
title = "谈天说地:狄奇周刊(二一)"
date = 2025-02-04
[taxonomies]
tags = ["谈天说地"]
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[Cloudflare推出验证在线图片的真实性的功能](https://blog.cloudflare.com/preserve-content-credentials-with-cloudflare-images/)**
Cloudflare采用由Adobe主导的“内容凭证”系统为图片和视频添加数字元数据标签追踪其所有权、发布历史以及是否经过篡改特别是是否使用了生成性AI工具。
Cloudflare还推出了一个“保留内容凭证”的一键设置功能适用于所有通过Cloudflare Images托管的内容用户可以通过Adobe的“内容真实性”网页工具或Chrome扩展程序轻松验证这些图片的数字历史。
该系统基于“内容来源与真实性联盟”C2PA制定的开放标准旨在帮助艺术家和摄影师保留作品的归属权并帮助用户区分真实和经过AI工具生成或篡改的图像与视频。
## **二.[Apple开源 Xcode 底层构建引擎 Swift Build](https://www.swift.org/blog/the-next-chapter-in-swift-build-technologies/)**
苹果正式宣布将 Swift Build 开源,并纳入 Swift 项目,致力于为所有 Swift 用户提供更强大且统一的跨平台构建体验。Swift Build 作为 Xcode 的底层构建引擎,已为数百万 App 和苹果自家操作系统构建流程提供支持,现开源后也可面向 Linux、Windows 等平台。
Swift Package Manager 将逐步采用统一引擎确保在所有平台和工具中获得一致的构建体验并为后续新功能和性能改进铺平道路。目前Swift Build 已在 GitHub 的 Swift 组织下公开,社区开发者可提交反馈与改进建议,共同推进这一新里程碑的发展。
## **三.[Firefox 离线翻译插件在 Nightly 上已经开始支持中译英。](https://connect.mozilla.org/t5/ideas/support-chinese-translations/idc-p/81626/highlight/true#M43969)**
此插件是 Project Bergamot 的一部分,后者由欧盟资助,旨在提升浏览器离线机器翻译的效果。
插件目前支持 12 种语言,包括德语、西语、俄语、葡萄牙语、意大利语等。
## **四.[小米向 AOSP 提交补丁,拟禁止用户通过 adb 等方式提取 APK 文件](https://android-review.googlesource.com/c/platform/system/sepolicy/+/2101015)**
一位小米工程师向 AOSP 提交了一个补丁,该补丁将添加一个 SELinux 策略,禁止用户通过 adb 等方式来提取 APK 文件,理由是 APK 中可能会包含一些「私有资源」。
该补丁提交后,在 AOSP Code Review 中引起热议。该工程师称“APK 只应该从谷歌市场或其他应用市场等可靠来源获取,如果一个 APK 可以被 adb 提取,它就可以被反编译,这样会有一定的安全风险。”。有网友在下面顺势质问小米不开源内核,小米并未对此答复。
好在 Google 拒绝将此补丁合入 AOSP并称“APK 基本上不是(原文大写强调)秘密”,但 Google 拒绝合并并不意味着 MIUI 不会采取措施来进一步限制用户权限,好时代,来临力🤮
## **五.[DeepSeek发布的开源推理大模型R1震动全球AI圈](https://telegra.ph/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82DeepSeek%E6%96%B0%E6%A8%A1%E5%9E%8B%E5%A4%A7%E6%8F%AD%E7%A7%98%E4%B8%BA%E4%BD%95%E5%AE%83%E8%83%BD%E9%9C%87%E5%8A%A8%E5%85%A8%E7%90%83AI%E5%9C%88-01-26)**
1 月 20 日DeepSeek 发布了全新的开源推理大模型 DeepSeek-R1在数学、编程和推理等多个任务上达到了与 OpenAI o1 相当的表现水平同时将API调用成本降低了 90-95%。
和上次不同的是这次推出的新模型DeepSeek-R1不仅成本低更是在技术上有了大福提升。
AI圈大V Yuchen Jin认为DeepSeek-R1 论文中的这个“顿悟时刻”意义巨大:纯强化学习 (RL) 使LLM自动学习思考和反思。
这挑战了之前的观点,即复制 OpenAI 的 o1 推理模型需要大量 CoT 数据。事实证明,你只需要给予它正确的激励即可。
# **文推**
[让 Android 手机更省电流畅,你可以试试「刷内核」](https://sspai.com/post/56296)
[《纽约客》主编专访比尔·盖茨|盖茨和新晋特朗普科技寡头](https://telegra.ph/%E7%BA%BD%E7%BA%A6%E5%AE%A2%E4%B8%BB%E7%BC%96%E4%B8%93%E8%AE%BF%E6%AF%94%E5%B0%94%E7%9B%96%E8%8C%A8%E7%9B%96%E8%8C%A8%E5%92%8C%E6%96%B0%E6%99%8B%E7%89%B9%E6%9C%97%E6%99%AE%E7%A7%91%E6%8A%80%E5%AF%A1%E5%A4%B4-02-04)
[对 DeepSeek 真实水平的分析](https://mp.weixin.qq.com/s/66d0tcyDdAq9cUPVZH4VRA)
# **项目**
[互传联盟,在不同品牌设备上互传](https://github.com/kmod-midori/CatShare)
[SamWaf开源轻量级网站防火墙完全私有化部署](https://github.com/samwafgo/SamWaf)
[在PDF里运行Linux利用RISC-V模拟器将Linux系统嵌入PDF文件基于TinyEMU支持32位和64位系统](https://github.com/ading2210/linuxpdf)

View File

@ -0,0 +1,94 @@
+++
title = "谈天说地:狄奇周刊(三)"
date = 2024-06-26
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,这周三提前一天更新.
<!-- more -->
# **事记**
## **一.[阿桑奇刑满出狱](https://newsapp.abc.net.au/newsapp//chinese/2024-06-26/peter-greste-prison-julian-assange-case-press-freedom-journalism/104025642)**
朱利安·阿桑奇Julian Assange在同意对违反美国《间谍法》的一项指控认罪后已经出狱。预计本周在北马里亚纳群岛的美国法庭出庭后他将获得自由。26日阿桑奇承认了一项“共谋获取和披露国防信息”的刑事指控。`法官判处阿桑奇在狱中服刑期满,他已重获自由并将返回澳大利亚`。)
## **二.[湖北电信屏蔽苹果ESS查询服务导致iMssage登录和互联互通无法使用](https://t.me/zaihuapd/25763)**
近期,湖北电信的部分宽带用户遭遇了苹果设备功能异常,包括`iMessage、FaceTime、Apple TV屏幕镜像、HomePod`使用受限及连续互通功能失效。起初,人们怀疑是苹果设备的问题,但随着网上讨论增多,发现受影响的用户主要集中在特定的宽带运营商服务范围内。经分析,`宽带服务商屏蔽了identity.apple.com域名`导致设备无法正常验证Apple ID状态进而影响功能使用。
使用在线路由追踪验证了湖北电信和联通的线路,发现`联通线路能正常与苹果服务器通信,而电信则在本地终止。`
> [解决方法](https://github.com/ifr0zen/DoH-for-iMessage-FaceTime?tab=readme-ov-file)
## **三.**[CSDN的gitcode正在批量搬运github](https://t.me/zaihuapd/25753)
近期有网友在csdn推出的[gitcode](https://gitcode.com/404)中发现了自己在github上的项目而自己并未入驻gitcode。
经测试发现,`github 上的仓库几乎都搬了过去`,不过也根据关键词屏蔽了一些仓库。
比较有趣的是可能csdn没有设置vpn相关的屏蔽词因此上面`有许多的vpn教程仓库`,甚至有许多敏感话题的仓库.
大家可以试试搜搜看看自己的github有没有被搬运。
> 随后[由于热度较高目前GitCode无法正常访问](https://t.me/zaihuapd/25757),ITdog测速全红;然后又被V友爆料对敏感仓库进行的是[前端屏蔽](https://v2ex.com/t/1052804),可谓抽象.
## **四.[Linux 资深网络开发者 Larry Finger 去世](https://www.phoronix.com/news/Larry-Finger-Linux-Wireless)**
> 2024-06-24 17:37 by RIP
Linux 资深网络开发者 Larry Finger 于 6 月 21 日去世,享年 84 岁。他的妻子在 linux-wireless 邮件列表上通过了一份简短声明发布了他去世的消息。`Larry Finger 自 2005 年起参与 Linux 内核无线驱动的开发,近二十年来向主线内核贡献了逾 1500 个补丁。`最初是博通的 BCM43XX 驱动,近期则是 RTW88、RTW89、R8188EU、R8712、RTLWIFI、B43 等内核网络驱动。部分是`由于他的贡献Linux 无线硬件支持过去二十年取得了长足进步`
## **五.[中国公司帮助缅甸屏蔽 VPN](https://www.techradar.com/pro/vpn/how-the-myanmar-vpn-ban-is-plunging-citizens-into-online-darkness)**
缅甸军政府从 5 月 30 日起开始屏蔽 VPN 使用,如`赛风和NordVPN`等。军政府还让士兵随机检查行人的手机,寻找是否安装了非法 VPN 应用。报道称,`有城市居民因为安装了 VPN 应用被罚款 300 万缅元1380 美元)`,如果`付不起钱则会遭到逮捕`。知情人士称,军政府雇佣了一家中国公司实现 VPN 屏蔽屏蔽使用了来自中国的软件。Access Now 的亚太政策分析师 Wai Phyo Myint 表示,军政府过去三年一直在寻找最新技术和工具加强对信息访问的控制,最新禁令是至今最严厉的互联网访问限制。
## **六.[京东禁止用户使用第三方比价工具或插件,否则将限制账号使用](https://www.landiannews.com/archives/104595.html)**
从6月22日开始多名网友收到京东商城发来的通知短信在短信中京东称`监测到用户账号可能被恶意使用`,如果用户`使用第三方比价工具或插件则必须卸载并修改京东账号密码``否则账号将被持续进行限制`
目前电商网站类的比价工具、扩展程序乃至使用脚本进行嵌入式比价的非常多,京东此番操作将会影响不少用户,逼迫用户停止使用此类软件。
> 另附:中国“618”购物节销售额首次下降
随着中国电商平台竞相提供全年大幅折扣,中国的网络购物节正开始失去光彩。根据数据公司 Syntun 的报告,在`周四结束的“618”购物节期间全网销售总额同比下降7%至7430亿元人民币。`研究公司 Feigua 的数据显示5月下半月中国“直播带货一哥”李佳琦的销售额同比下降46%美妆主播骆王宇的销售额暴跌了68%……。
# **文推**
[性癖纵横观 I](https://onojyun.com/2024/06/21/%e6%80%a7%e7%99%96%e7%ba%b5%e6%a8%aa%e8%a7%82-i/)
[性癖纵横观 II](https://onojyun.com/2024/06/25/%E6%80%A7%E7%99%96%E7%BA%B5%E6%A8%AA%E8%A7%82-ii/)
[你所熟知的时代,才开始没多久](https://telegra.ph/%E4%BD%A0%E6%89%80%E7%86%9F%E7%9F%A5%E7%9A%84%E6%97%B6%E4%BB%A3%E6%89%8D%E5%BC%80%E5%A7%8B%E6%B2%A1%E5%A4%9A%E4%B9%85-06-25)
[只需一人努力,就可以让一个国家进入原始社会](https://chinadigitaltimes.net/chinese/709228.html)
[“你是爸妈不要的孩子。” 送养的女孩被接回家后](https://telegra.ph/%E4%BD%A0%E6%98%AF%E7%88%B8%E5%A6%88%E4%B8%8D%E8%A6%81%E7%9A%84%E5%AD%A9%E5%AD%90-%E9%80%81%E5%85%BB%E7%9A%84%E5%A5%B3%E5%AD%A9%E8%A2%AB%E6%8E%A5%E5%9B%9E%E5%AE%B6%E5%90%8E-06-26)
[思源字体背后的中国公司- 造福亿万国人,默默无闻 40 载,让中国字体走向世界](https://mp.weixin.qq.com/s/HEcx83sPV0dcTWj9yb5DuA)
[做好优化、选好软件,改善 Android 类原生 ROM 的使用体验](https://sspai.com/post/89282)
# **项目**
[VPS剩余价值计算器](https://github.com/xiangmingya/vps_valuation)
[gcop:Your git AI copilot.](https://github.com/Undertone0809/gcop)
[GPT 学术优化 (GPT Academic)](https://github.com/binary-husky/gpt_academic)
[ONLYOFFICE Docker部署](https://github.com/ONLYOFFICE/Docker-DocumentServer)
[把主动权「完全」握在自己手里HTML 个人电子工作台搭建指南](https://sspai.com/post/89853)

103
content/weekly/zhoubao-4.md Normal file
View File

@ -0,0 +1,103 @@
+++
title = "谈天说地:狄奇周刊(四)"
date = 2024-07-04
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,每周四更新.
<!-- more -->
# **事记**
## **一.[日本政府宣布废除所有软盘使用规定](https://newsdig.tbs.co.jp/articles/1270285)**
日本数字厅大臣河野在上月的发布会表示:“在 1,034 项法规中,我们已经完成了对 1,033 项要求通过软盘提交的法规的审查”,`法规关于软盘的使用已全部废除`。河野大臣表示,接下来还会`推动废除传真机办公`
## **二.[最新的CVE漏洞目前严重影响了Open-SSH的安全性](https://www.qualys.com/regresshion-cve-2024-6387/)**
`SSH RCE: CVE-2024-638`该漏洞是由于 OpenSSH 服务器 (sshd) 中的信号处理程序竞争问题,未经身份验证的攻击者可以利用此漏洞在 Linux 系统上以 root 身份执行任意代码。
影响版本:`8.5p1 <= OpenSSH < 9.8p1`
在我们的实验中,平均需要约 10,000 次尝试才能赢得这种竞争条件,因此每 120 秒 (LoginGraceTime) 接受 100 个连接 (MaxStartups) 需要约 3-4 小时。最终,`平均需要约 6-8 小时才能获得远程 root shell`,因为我们只有一半的时间可以正确猜出 glibc 的地址(由于 ASLR
> 目前几个发行版的动静:
- Fedora: 💤 [9.6p1]
- openSUSE: 几分钟前打了 patch [9.6p1]二进制包可能要稍晚更新Leap 中 15.6 依旧 💤 [9.6p1]
- ArchLinux: 推了 9.8p1-1
- Ubuntu: 22.04-24.04 均已 backport [src]
- Alpine: 💤 [9.7p1],因为人家用的是 musl 压根不受影响
- Debian: bookworm 在 6/22 悄悄 backport 直到今日才推送 [9.2p1-2+deb12u3]sid 依旧有漏洞 [9.7p1-6]
- NixOS: backport 了补丁 [9.8p1]
- CentOS Stream: 💤 [9.6p1-1]
- Gentoo: 已 backport [9.6p1,9.7p1]
- openEuler: 💤 [9.3p2-3]
- openAnolis: 💤 [9.3p2-1]
- AOSC OS: 推了 [9.8p1]
- Deepin: backport 了 [9.7p1-4deepin2]
- openKylin: 💤 [9.6p1-ok4]
- LoongnixServer: 不受影响 [8.0p1]
- Loongnix: 不受影响 [7.9p1]
## **三.[多款国内安卓系统设备名称联网校验](https://s.v2ex.com/t/1053659)**
Android 系统里存在`设备名称`这个配置它会作为蓝牙、Wi-Fi 热点网络共享的默认名称,展示给其他设备。并且会作为环境变量 Settings.Global.DEVICE_NAME能被 App 读取。
2024年6月 下旬真我realme手机在系统更新日志中提到
>新增 更改手机名称联网校验功能,系统会检测手机名称是否存在敏感字符,校验未通过将无法保存或使用更改的手机名称
根据 V2EX 上的讨论来看,`小米手机也被添加了此限制`。而造成此审查的直接原因,可能与限制 AirDrop 相同,都是在`尝试管理「近距离自组网」`
关于使用 Wi-Fi 名称来抗议,在俄罗斯存在类似的先例:`2024年3月一名学生将路由器的名称设置为Slava Ukraini!(荣耀属于乌克兰!),`如果有人在范围里检查 Wi-Fi 选项,就会看到这段口号。随后该学生在莫斯科被捕,法院以展示「极端主义组织标志」的罪名,判处其 10 天监禁,该学生随后还被莫斯科国立大学开除。
## **四.[知乎加强爬虫限制](https://t.me/zaihuapd/25788)**
使用包含"bot"或"spider"的UA访问知乎时页面的部分内容被替换为随机汉字
知乎在` robots.txt 中移除 Google 和 Bing 等搜索引擎`近期又针对UA进行了严格的限制。目前`User Agent 中出现"bot"或"spider"的访问结果`中,知乎会将问题或专栏的标题、发布者的用户名、文章正文等文本`替换为随机汉字`。必应的部分搜索结果已经受到了影响。
## **五.[CentOS Linux 7 生命周期正式结束](https://t.me/CE_Observe/34311)**
此外,与 CentOS 7 同源的红帽企业` Linux 7RHEL 7也于今日进入 EOM 停止维护阶段`,企业可通过 ELS 订阅付费获得额外 4 年的延长支持。
据介绍CentOS 项目与红帽已于 2020 年结束 CentOS Linux 开发,将`全部投资转向 CentOS Stream`
- 在 RHEL 新版本发布之前,红帽会在 `CentOS Stream 上持续发布源代码,作为 RHEL 的上游`开源开发平台
- CentOS 创始人 Gregory Kurtzer 启动 `Rocky Linux `项目,开发 RHEL 的下游二进制兼容版本
## **六.[亚马逊Kindle中国服务正式停止](https://t.me/xhqcankao/11529)**
据亚马逊中国官网消息,`2024年6月30日起Kindle中国电子书店停止云端下载服务`,此后`未下载的电子书将无法下载和阅读`。同时Kindle客户服务也将停止支持。
Kindle中国电子书店已于2023年6月30日停止运营。亚马逊建议用户及时将已购买电子书及其他Kindle内容下载至Kindle阅读器和Kindle App (含手机端和电脑端).
# **文推**
[置身事内 - 读书笔记](https://tw93.fun/2024-06-30/china.html)
[我们所认识的胡友平](https://mp.weixin.qq.com/s/Fxczq9ba_WFs9WM32-7AtA)
[是语言基于文字,还是文字基于语言?](https://telegra.ph/%E6%98%AF%E8%AF%AD%E8%A8%80%E5%9F%BA%E4%BA%8E%E6%96%87%E5%AD%97%E8%BF%98%E6%98%AF%E6%96%87%E5%AD%97%E5%9F%BA%E4%BA%8E%E8%AF%AD%E8%A8%80---%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-06-26-3)
[066真正松弛的感觉是听从内心去创造去生活](https://usefulness.zhubai.love/posts/2420277964471472128)
# **项目**
[全栈 DS/DA 养成手册](https://github.com/Jace-Yang/Full-Stack_Data-Analyst)
[网络信息安全从业者面试指南](https://github.com/FeeiCN/SecurityInterviewGuide)
[Go 写的 VitePress 可视化配置工具](https://github.com/zhangdi168/VitePressSimple)
[TradingView : 一个图表平台和社交网络全球60M+交易员和投资者使用它](https://cn.tradingview.com/markets/world-stocks/worlds-largest-companies/)
[一个干净、深色的 Neovim 主题,用 Lua 编写,支持 lsp、treesitter 和许多插件](https://github.com/folke/tokyonight.nvim?tab=readme-ov-file)

View File

@ -0,0 +1,86 @@
+++
title = "谈天说地:狄奇周刊(五)"
date = 2024-07-11
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,每周四更新.
<!-- more -->
# **事记**
## **一.[谷歌在Chromium中预留私有API以读取更多PC硬件信息](https://t.me/zaihuapd/26027)**
谷歌在``Chromium开源项目中预留了私有API``允许谷歌网站读取PC的CPU/GPU使用率、内存使用率等硬件信息。这些API``仅对谷歌主域名开放``可能违反了欧盟的数字市场法案DMA并可能构成不公平竞争。例如Google Meet可以``利用这些信息优化视频会议性能``而竞争对手如Zoom则无法获取同样级别的硬件信息。
此外这些API通过一个Chrome扩展程序实现用户无法禁用或在扩展管理页面中找到。``Microsoft Edge和Brave浏览器也被发现内置了该扩展程序``。目前尚不清楚谷歌是否会更新Chrome以允许用户禁用此扩展。
据[V2EX站友表示](https://www.v2ex.com/t/1056113),插件远比网页的级别高,可调用资源甚至接近浏览器的级别,可用来收集用户的硬件画像,对保护隐私极其不利。
## **二.[中国取证公司五五安科旗下昆仑解锁实验室发布Android14提权取证工具](https://t.me/zaihuapd/26048)**
厦门五五安科信息科技有限公司的``昆仑解锁实验室``最近发布了一款``面向Android 14的提权取证工具``。此工具据推测通过利用漏洞绕过了Android权限管理机制从而访问和提升设备权限实现对设备的深入取证。特别值得注意的是该工具``成功实现了对采用Google Tensor芯片的Pixel手机的权限提升``。据悉此漏洞可能已由Google在其七月份的安全更新中得到修复然而目前``尚不明确该取证工具是利用已知漏洞还是未公开的新漏洞进行提权``。鉴于此,建议所有用户更新至最新的安全补丁,以确保设备安全。
## **三.[两部门:开展“网络去 NAT”专项工作进一步深化 IPv6 部署应用](https://www.ithome.com/0/780/864.htm)**
工信部办公厅、网信办秘书局近日发布《关于开展“网络去 NAT”专项工作进一步深化 IPv6 部署应用的通知》。
- 基础电信企业要`增加 IPv6 互联网专线产品供给`,新增互联网专线默认开通 IPv6 功能。要加快实施家庭网关 `IPv6 地址前缀二次分发功能升级`。
- 到 2024 年底,基础电信企业自有环境`固定宽带用户 IPv6 连通率不低于 80%`。终端设备制造企业要严格落实无线电发射设备型号核准有关通知要求。各省(区、市)有关部门要推动属地终端设备制造企业加快存量家庭`无线路由器 IPv6 功能升级`。
- 互联网企业要深化应用服务 IPv6 升级改造,优化放量引流策略,实现`注册、登录、使用全链条支持 IPv6`,提升固网环境下 IPv6 流量占比。
- 内容分发网络CDN运营企业要`推动边缘节点、核心节点等各层级支持 IPv6`,提升用户加速、业务调度和内容回源等 IPv6 流量占比。
- `云服务`企业要优化产品业务逻辑,向用户提供服务时`默认启用 IPv6 功能`。
> [盘点一下国内 IPv6 发展过程中都折腾了啥](https://t.me/CE_Observe/34512)
## **四.[小米采取措施禁止国行设备运行国际版系统](https://t.me/CE_Observe/34474)**
近日,知名官改 ROM ``Xiaomi.EU 的测试者 Kacper Skrzypek ``在 X 发文[1]称,小米在开机向导中添加了区域检测机制。
如果设备硬件为国行版,但正在运行国际系统,将``无法完成开机向导``并提示「Unsupported software」。
原推文提醒,该机制目前已在 Redmi Note 13 系列实装。
## **五.[30年来首次 我国新设六个国际通信业务出入口局](https://www.thepaper.cn/newsDetail_forward_28023111)**
工业和信息化部7月10日向中国电信、中国移动、中国联通颁发许可批复在``广西南宁、山东青岛、云南昆明、海南海口``设立国际通信业务出入口局。
``1994年我国全功能接入国际互联网``中国电信、中国移动、中国联通在北京、上海、广州设立了9个国际通信业务出入口局实现公众互联网与国际互联网连通。
广西南宁、山东青岛、云南昆明、海南海口``新增设6个国际通信业务出入口局``这是30年来首次增设建成后将显著提升国际网络通信能力更好推动基础设施互联互通、数据跨境流动和国际数字贸易发展促进更高水平开放为构建新发展格局塑造新动能新优势。
目前已知的登陆站应该是`青岛、汕头、上海,以及福州的淡福海缆`, 似乎是湾专线、以及通信业务才用的,还有`厦金海缆`,不过这些都不给宽带业务用。
---
# **文推**
[唐一水|谁能躲过搀煤的食用油?](https://chinadigitaltimes.net/chinese/709516.html?amp)
[乔姆斯基谈语言的差异,演化及纯正性](https://www.bilibili.com/video/BV1KU4y1X7wj/?t=573)
[西安男子开民办派出所和警察抢生意 半年赚百万 ](https://telegra.ph/30-07-05-3)
[Git 的故事:這一次沒這麼好玩 | 軟體考古學家](https://blog.brachiosoft.com/posts/git/)
[不愿被困住的青年教师,逃离“非升即走” | 谷雨](https://telegra.ph/%E4%B8%8D%E6%84%BF%E8%A2%AB%E5%9B%B0%E4%BD%8F%E7%9A%84%E9%9D%92%E5%B9%B4%E6%95%99%E5%B8%88%E9%80%83%E7%A6%BB%E9%9D%9E%E5%8D%87%E5%8D%B3%E8%B5%B0--%E8%B0%B7%E9%9B%A8-07-10-2)
[爱宠死了但我仍在偿还狗狗的医疗费用动物医疗会成为下一个吸血产业吗](https://telegra.ph/%E7%88%B1%E5%AE%A0%E6%AD%BB%E4%BA%86%E4%BD%86%E6%88%91%E4%BB%8D%E5%9C%A8%E5%81%BF%E8%BF%98%E7%8B%97%E7%8B%97%E7%9A%84%E5%8C%BB%E7%96%97%E8%B4%B9%E7%94%A8%E5%8A%A8%E7%89%A9%E5%8C%BB%E7%96%97%E4%BC%9A%E6%88%90%E4%B8%BA%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%90%B8%E8%A1%80%E4%BA%A7%E4%B8%9A%E5%90%97-07-10)
---
# **项目**
[命令行 Git 信息工具](https://github.com/o2sh/onefetch)
[IOT 固件安全 All in One](https://wokough.gitbook.io/iot-firmware-aio)
[Typikon:使用 markdown 来编写您的在线书](https://github.com/auula/typikon)
[推荐系统入门指南,全面介绍了工业级推荐系统的理论知识](https://github.com/solidglue/Recommender_System?tab=readme-ov-file)
[史上最大密码泄露下载-RockYou2024 密码汇编泄露近 100 亿](https://s3.timeweb.cloud/fd51ce25-6f95e3f8-263a-4b13-92af-12bc265adb44/rockyou2024.zip)
[由 BTN 网络统计分析/用户报告得出的可被安全的加入系统防火墙屏蔽的 IP 地址列表](https://github.com/PBH-BTN/BTN-Collected-Rules)

View File

@ -0,0 +1,68 @@
+++
title = "谈天说地:狄奇周刊(六)"
date = 2024-07-18
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,每周四更新.
<!-- more -->
# **事记**
## **一.[NVIDIA 全面转向开源 GPU 内核模块](https://t.me/xhqcankao/11996)**
NVIDIA 于 2022 年 5 月发布了一组 Linux GPU 内核模块,作为具有`双重 GPL 和 MIT 许可`的开源模块。当时该公司宣布NVIDIA 开放内核模块最终将取代闭源驱动程序。现在,由于开源 GPU 内核模块实现了同等甚至更好的应用程序性能NVIDIA 将在即将发布的 R560 驱动程序版本中`完全过渡到开源 GPU 内核模块`
对于 `Grace Hopper 或 Blackwell `等最新平台,用户`必须使用开源` GPU 内核模块,这些平台不支持专有驱动程序。对于 `Turing、Ampere、Ada Lovelace` 或 Hopper 架构的较新 GPUNVIDIA 建议`切换`到开源 GPU 内核模块。对于 `Maxwell、Pascal 或 Volta `架构的较旧 GPU开源 GPU 内核模块与平台`不兼容`,将继续使用 NVIDIA 专有驱动程序。
## **二.[代码托管平台 GitLab 正考虑出售,目前市值约 80 亿美元](https://www.reuters.com/markets/deals/google-backed-software-developer-gitlab-explores-sale-sources-say-2024-07-17/)**
GitLab 于` 2021 年在美股上市`,现在的`股价不到上市时的一半`,仅 2024 年就下跌了 16%。
尽管该公司报告称,其收入同比增长 33%,达到 1.692 亿美元并在最新季度首次实现正现金流但它承认由于与微软旗下github的竞争其产品定价面临阻力。
根据 GitLab 国内官网介绍,许多`知名企业`均有使用该公司服务,包括`中国联通、中国电信、英特尔、网易、理想、蔚来等`
## **三.[家电翻新机背后的秘密:伪造能效标识、化学剂漂白外壳](https://www.reuters.com/markets/deals/google-backed-software-developer-gitlab-explores-sale-sources-say-2024-07-17/)**
今年以来,国家推动新一轮家电以旧换新,引导完善废旧家电回收体系。不过,私拆、翻新机目前仍然大量存在,翻新机已是业内公开的秘密,它存在一条隐形的产业链。不久前格力电器董事长兼总裁董明珠在格力电器股东大会上说,有的废旧空调,被不良商家`几百元收回来翻新后1500元卖出去`,消费者是最大的受害者。
## **四.[中国气象局:“闪信”等强制提醒技术落地防灾减灾一线 ](https://www.cma.gov.cn/2011xwzx/2011xqxxw/2011xqxyw/202407/t20240715_6417862.html)**
今年以来,浙江省气象局基于省突发事件预警信息发布系统对接“闪信”发布渠道,针对三家运营商“霸屏”业务要求的区别,实现`快速自动编辑、一键式推送发布`功能。在发布气象预警信息时,“闪信”还可与`浙政钉信息、短信、应急广播信息`等原有渠道一并通过该系统一键发布。
> PS:0级短信早该用来预警了,有些地方却用来发广告;而且这种事居然没有全国统一...
---
# **文推**
[性癖纵横观VI](https://onojyun.com/2024/07/15/%e6%80%a7%e7%99%96%e7%ba%b5%e6%a8%aa%e8%a7%82vi/)
[2024年上半年互联网黑灰产研究报告](https://mp.weixin.qq.com/s/PR5Y5JbAKjMdI25KmubwjQ)
[供应链投毒后,我们的选择还剩下哪些?](https://www.54yt.net/435.html)
[条形码和二维码是如何颠覆现代商业世界的?](https://telegra.ph/%E6%9D%A1%E5%BD%A2%E7%A0%81%E5%92%8C%E4%BA%8C%E7%BB%B4%E7%A0%81%E6%98%AF%E5%A6%82%E4%BD%95%E9%A2%A0%E8%A6%86%E7%8E%B0%E4%BB%A3%E5%95%86%E4%B8%9A%E4%B8%96%E7%95%8C%E7%9A%84%E4%BA%AE%E9%A9%AC%E6%A1%A5%E5%B0%8F%E7%BA%AA%E4%B8%A5%E9%80%89-07-17)
[终于可以在 Linux 下愉快打印了Linux 发行版配置打印机攻略](https://sspai.com/post/90194)
---
# **项目**
[一款开源的跨平台剪切板管理工具](https://github.com/ayangweb/EcoPaste)
[一个高度可定制的变更日志生成器,遵循传统提交规范](https://github.com/orhun/git-cliff)
[收录了一些能够免费下载油管、B 站、抖音等平台视频的下载工具](https://github.com/DangJin/awesome-social-media-downloader)
[一款以图形为中心、轻量级、本地优先的用于构建第二大脑的效率工具](https://github.com/revezone/revezone)

View File

@ -0,0 +1,60 @@
+++
title = "谈天说地:狄奇周刊(七)"
date = 2024-07-26
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章,每周四更新.PS因为昨天输入法突发恶疾所以无法按时更新。
<!-- more -->
# **事记**
## **一.[瑞士强制要求所有政府软件开源](https://t.me/CE_Observe/34773)**
瑞士通过了名为《联邦电子政务法》EMBAG的立法强制要求所有公共部门使用 开源 软件 (OSS)。 该法律规定,除非涉及第三方权利或安全问题,否则所有公共机构必须公开其开发或为其开发的软件的源代码。这一举措旨在提高政府运营的透明度、安全性,和效率。
## **二.[Microsoft 推出 26100.1297 版本,为中国设备安装了 Microsoft 电脑管家](https://t.me/zaihuapd/26336)**
## **三.[360推出AI弹窗过滤器可以屏蔽自家弹窗 30元/月](https://t.me/zaihuapd/26340)**
360 在测试新功能名为 AI 弹窗过滤器可以拦截用户电脑上包括但不限于360 自家的弹窗广告。
原来的360弹窗过滤器无法过滤360自家的弹窗广告。此功能包含在360AI大会员中30元每月。
并且暂时还不清楚能否彻底拦截 360 全家桶的所有弹窗广告。
## **四.[Windows 全球大规模蓝屏,疑因 CrowdStrike 推送补丁导致](https://t.me/zaihuapd/26208)**
有大量网友在微博、X、reddit等社交媒体上反馈自己工作的 Windows 电脑出现蓝屏,疑似因为 CrowdStrike 的 csagent.sys 导致的。
---
# **文推**
[2023 年终总结 | 要让生活「自洽」](https://muyun.work/2023-summary.html)
[我知道的关于 Git 提交的 89 件事](https://www.jvt.me/posts/2024/07/12/things-know-commits/)
[洗个澡我操碎了心·淋浴间安装设计DIY全分享](https://post.smzdm.com/p/a5xnmw67/)
---
# **项目**
[解决 windows 打游戏卡输入法的问题](https://blog.musnow.top/posts/104528985/)
[从零开始搭建你的免费博客评论系统Remark42 + fly.io](https://www.pseudoyu.com/zh/2024/07/22/free_commenting_system_using_remark42_and_flyio/)
[资源整合下载不求人NAS搭建磁力搜索网站程序——Bitmagnet-Next-Web](https://panda995.xyz/network/5044.html)
[群晖DSM使用qBittorrent+蜜柑计划+nastool实现自动追番和入库emby/jellyfin](https://blog.xioxix.com/archives/418)

View File

@ -0,0 +1,69 @@
+++
title = "谈天说地:狄奇周刊(八)"
date = 2024-08-03
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[中国就“网号”“网证”征求意见](https://www.cac.gov.cn/2024-07/26/c_1723675813897965.htm)**
中国发布《国家网络身份认证公共服务管理办法》征求意见稿。截至日期8月25日。办法中提到自然人在互联网服务中依法需要登记、核验真实身份信息时可通过国家网络身份认证 App 自愿申领并使用“网号”“网证”进行非明文登记、核验,无需向互联网平台等提供明文个人身份信息。由此,可以最大限度减少互联网平台以落实“实名制”为由超范围采集、留存公民个人信息。不满十四周岁的自然人需要申领网号、网证的,应当征得其父母或者其他监护人同意。互联网平台不得要求用户另行提供明文身份信息。
记者注意到申领和使用“网号”“网证”的应用“国家网络身份认证App(认证版)”已在多个应用商店上线。此前中国公安部、网信办等研究起草了征求意见稿核心是“为自然人提供申领网号、网证以及进行身份核验等服务。”根据反馈申领注册“网号”“网证”需要使用身份证人脸识别是否为本人关联手机号设置网络身份口令授权网络身份在用户手机使用。目前正处于试点阶段已上线试点APP和场景共67个如国家政务服务平台、中国铁路12306、淘宝、微信、小红书、QQ等。据悉后续有关主管部门还将继续研究适用的应用场景包括互联网用户账号实名注册、登录对存在涉诈异常账号的用户身份重新进行核验网上办理政务服务事项时的身份核验等。
> 乍一看似乎还行,然后就想到根据网号一键封禁所有账号的操作,以及新的拖库危机
## **二.[全国地震预警小程序公测启动](https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=16344595265462986336&source=50001&sub_source=50001_011)**
中国地震台网中心、中央广播电视总台国家应急广播与腾讯合作推出了全国微信预警服务的公测版本。该小程序与此前江苏地震预警服务UI完全一致自行选择即可。
可通过微信搜索"中国地震台网"或"地震预警",进入小程序并开启服务,接收官方地震预警信息。小程序支持高并发量用户秒级消息推送,并在地震发生时提供强提醒警示及防震指南。
> PS依然是先试点再推广的流程不过说好的0级短信呢。。。
## **三.[印尼因赌博和色情问题禁用搜索引擎 DDG](https://t.me/xhqcankao/12415)**
印尼通信部周五表示,已禁止以隐私为导向的搜索引擎 DuckDuckGo理由是担心它可能被用来访问该国非法的色情和在线赌博网站。印尼是全球穆斯林人口最多的国家该国制定了严格的规定禁止在网上分享被视为淫秽的内容。通信部官员乌斯曼·坎松告诉路透社DuckDuckGo 被屏蔽“是因为很多人投诉其搜索结果中充斥着网络赌博和色情内容”。印尼近几个月来誓言要严厉打击网络赌博并禁止访问多个此类网站。尽管网络赌博属于非法但政府数据显示去年有300万印尼人上网赌博花费约200亿美元约占国内生产总值的1.5%。
> 群友建议安装反诈APP最好使用鸿蒙系统内置
## **四.[DigiCert 吊销数万份使用 CNAME 进行域名验证的 TLS/SSL证书](https://www.digicert.com/support/certificate-revocation-incident)**
数字证书颁发机构 DigiCert 在 7 月 29 日通过博客宣布将吊销没有适当域控制验证 (DCV) 的证书,大约 0.4% 的 DigiCert 适用域验证受到影响,数量可能超过数千份。根据严格的 CABF 规则,域验证中存在问题的证书必须在 24 小时内撤销无一例外。DigiCert 已通知受影响的客户,他们必须在 24 小时内更换证书。
本次事件涉及通过添加 DNS CNAME 记录并为此提供随机值进行域名控制验证。其中一种方法要求随机值以下划线字符为前缀下划线前缀可确保随机值不会与使用相同随机值的实际域名发生冲突。最近DigiCert 发现在某些基于 CNAME 的验证案例中使用的随机值中没有包含下划线前缀。虽然域名发生冲突的可能性实际上可以忽略不计但如果验证不包含下划线前缀则仍被视为不合规。DigiCert 表示“CABF 认为任何与域验证有关的问题都是严重问题,需要立即采取行动。”
---
# **文推**
[Web App: 从 HTML 到 Jamstack](https://zgq.me/posts/web-app-history/)
[我是如何停止担心并喜欢 Makefiles 的](https://gagor.pro/2024/02/how-i-stopped-worrying-and-loved-makefiles/)
[分享个人软路由、NAS 和家庭服务器的使用情况](https://www.v2ex.com/t/1061012#reply82)
[拆解报告DELTA台达HVP系列高压直流电源DPR240/50A整流模块 ](https://post.smzdm.com/p/a2xoglwd/)
[【瞭望】海航重整案——亚洲规模最大、最难、最复杂的重整案件是如何炼成的](https://www.bilibili.com/video/BV1m4421Z7yD/)
---
# **项目**
[开发者文档合集](https://devdocs.io/)
[运维开发绿皮书](https://paper-dragon.github.io/)
[各个 linux 发行版在线试用](https://distrosea.com/)
[程序员专属SSH聊天室 devzat](https://github.com/quackduck/devzat)
[ 公务员从入门到上岸,最佳程序员公考实践教程](https://github.com/miss-mumu/developer2gwy)

View File

@ -0,0 +1,63 @@
+++
title = "谈天说地:狄奇周刊(九)"
date = 2024-08-08
+++
前言 这里是Dich的周刊,通过博客的形式讲述每周互联网形势,以及分享一些文章。
<!-- more -->
# **事记**
## **一.[威瑞信宣布.COM域名将于9月1日起涨价](https://t.me/xhqcankao/12469)**
运营 .COM 的域名注册局威瑞信将于9月1日将批发价从9.59美元提高到10.26美元。大多数域名注册商都会在此基础上加价,但有些注册商会向客户收取批发价。因此,许多注册商都会提高价格。这是 .COM 域名价格连续第四年上涨7%,这是威瑞信与互联网名称与数字地址分配机构签订的合同以及与美国政府达成协议允许的最高涨价幅度。总而言之,自四年前以来,威瑞信已将 .COM 域名批发成本提高了31%。对于域名注册者来说好消息是威瑞信未来两年内不得涨价。但此后该公司可以连续四年每年涨价7%。
## **二.[微软 Authenticator 应用被曝设计缺陷,账号被覆盖、锁定](https://www.csoonline.com/article/3480918/design-flaw-has-microsoft-authenticator-overwriting-mfa-accounts-locking-users-out.html)**
微软的 Microsoft Authenticator 身份验证应用存在设计缺陷用户在扫描QR码添加新账号后应用会覆盖之前的账号导致多重身份验证MFA被锁定。
这个问题的核心在于Microsoft Authenticator 会用相同的用户名覆盖账户。由于多数用户的用户名是电子邮件地址,这个问题尤为严重。
而Google Authenticator等应用通过添加银行、汽车公司等信息来避免此问题。覆盖账号后系统难以识别哪个账号被覆盖可能导致新旧账号均出现验证问题。用户可能在几周或几个月后才发现账号被注销。
## **三.[马来西亚正在强制劫持 DNS 请求以阻止用户访问被屏蔽的网站](https://t.me/xhqcankao/12531)**
马来西亚互联网服务提供商 (ISP) 似乎实施了透明 DNS 代理,即强制所有互联网流量返回到其本地 DNS即使使用谷歌和 Cloudflare 等替代 DNS 也是如此。实施该策略的 ISP 包括 Time、Maxis、U Mobile、CelcomDigi 和 Unifi。通过透明 DNS 代理ISP 可以拦截并重定向 DNS 请求至本地 DNS。
为了遵守规定,所有电信公司/互联网服务提供商都必须通过其本地 DNS 阻止被认定为违法的网站。目前尚不清楚这项针对本地服务的透明 DNS 代理实施时间但由于已有四家以上的电信公司实施因此这似乎是针对所有电信公司的全国性指令。据称该指令早在今年2月就已发布。 马来西亚监管机构尚未对此有关的询问作出回应。
—— SoyaCincau、Sinarprojec
## **四.[1Password发现高危安全漏洞Mac用户需立即升级到最新版本](https://www.landiannews.com/archives/105295.html)**
知名密码管理器1Password的Mac版本被发现存在一个高危安全漏洞该漏洞允许恶意软件绕过进程间的通信保护窃取用户的解锁密钥。
这一安全问题由参与DEFCON黑客大赛的安全研究人员发现并计划在一次演讲中公开。1Password已经收到通知并及时修复了这一漏洞敦促用户升级到8.10.38或之后的版本以确保安全。
该漏洞被标识为CVE-2024-42219目前没有证据表明它已被恶意黑客利用更多关于该漏洞的细节将在DEFCON大会上演讲后公布。
# **文推**
[当你不再是宇宙的正中央](https://www.velasx.com/am/6237)
[你在电脑上看到的字到底是怎么显示出来的?](https://ssshooter.com/font-and-charcode/)
[放轻松 | 治愈「被互联网影响的心智」](https://sspai.com/post/85420)
---
# **项目**
[将你的 Telegram Channel 转为微博客](https://github.com/ccbikai/BroadcastChannel)
[FList静态页面生成的一个简洁的在线文件列表](https://github.com/jianjianai/FList)
[互联网仍有记忆那些曾经在校招过程中毁过口头offer、意向书、三方的公司](https://github.com/forthespada/CampusShame)

124
content/windows-SDE.md Normal file
View File

@ -0,0 +1,124 @@
+++
title = "乱七八糟:Windows开发环境搭建"
date = 2024-05-28
[taxonomies]
tags = ["乱七八糟","Windows"]
+++
前言 刚刚拿到windows的小伙伴可能对开发环境比较陌生这里对常用的开发环境设置进行总结。
<!-- more -->
首先我们默认windows版本为win11 23H2 专业工作站版,可以查看[上一期博客](https://blog.dich.bid/windows-optimization/).
## 搭建WSL环境
适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境,例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等,并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的开销。
首先,我们需要在``控制面板->程序->启用或关闭Windows功能``选中适用于Linux的Windows子系统和虚拟机平台容器以及hyper-v待安装完成后重启电脑。
然后,在``管理员模式下打开 PowerShell 或 Windows 命令提示符``,方法是右键单击并选择“以管理员身份运行”,输入以下命令,然后重启计算机。
```
wsl --install
```
此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能。(可以更改此默认发行版)。
### 一些其他命令
**列出可用的 Linux 发行版**
```
wsl --list --online
```
**列出已安装的 Linux 发行版**
```
wsl --list --verbose
```
**更新 WSL**
```
wsl --update
```
**检查 WSL 状态**
```
wsl --status
```
**关闭**
```
wsl --shutdown
```
立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。 在需要重启 WSL 2 虚拟机环境的情形下,例如更改内存使用限制或更改 .wslconfig 文件,可能必须使用此命令。
**导出分发版**
```
wsl --export <Distribution Name> <FileName>
```
将指定分发版的快照导出为新的分发文件。 默认为 tar 格式。 在标准输入中,文件名可以是 -。 选项包括:
--vhd指定导出分发版应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)
**导入分发版**
```
wsl --import <Distribution Name> <InstallLocation> <FileName>
```
导入指定的 tar 文件作为新的分发版。 在标准输入中,文件名可以是 -。 选项包括:
--vhd指定导入分发版应为 .vhdx 文件而不是 tar 文件(这仅在使用 WSL 2 的情况下受支持)
--version <1/2>:指定将分发版导入为 WSL 1 还是 WSL 2 分发版
## 搭建虚拟机环境
这里以 VMware Workstation Pro v17.6.0 为例该软件支持安装包括windows/linux/macos等多种虚拟机。
首先下载 [Vmware](https://www.423down.com/14542.html),随后安装并[激活](https://www.ypojie.com/6066.html),然后提前下载好所需系统的镜像,这里推荐[整合镜像站](https://help.mirrorz.org/)并在Vmware中启动。
## 搭建Docker
在 Windows 上部署 Docker 的方法是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。
我们需要先开启 Hyper-V 方法和搭建WSL一样 也可以通过命令来启用 Hyper-V ,请右键开始菜单并以管理员身份运行 PowerShell执行以下命令
```
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
```
然后安装Docker这里提供了一个图形安装界面[Docker Desktop](https://docs.docker.com/desktop/install/windows-install/)
安装时如果你想使用WSL作为后端则可以勾选 ``Use WSL2 instead of Hyper-V``随后可以登录docker账号并换源等等。
## 使用UniGetUI管理软件包
众所周知windows下包管理向来是个老大难问题各个软件包来源分散难以统一更新环境部署的包比较复杂这里推荐使用[UniGetUI](https://github.com/marticliment/UniGetUI)来统一管理。原名wingetUI
- WingetUI 能够安装、更新和卸载 Winget包括 Microsoft Store、Scoop、Chocolatey、pip、npm 和 .NET Tool 中的软件包。
- WingetUI 还会检测您手动安装的应用程序是否可以更新!
它还可以升级和卸载以前安装的软件包 - 以及卸载内置的Windows应用程序
- WingetUI 能够导入和导出您选择的软件包,以便您将来可以轻松安装它们。
- WingetUI 能够在安装前显示软件包相关信息如许可证、SHA256 哈希值、主页等)。
- 有超过 14000 个可用软件包(如果启用 Winget、Scoop 和 Chocolatey
## 使用IDE和代码编辑器
[Jetbrains](https://www.jetbrains.com.cn/ides/#choose-your-ide)向来是IDE中最知名的一款功能丰富界面美观并具有多种语言支持
[Visual Studio](https://visualstudio.microsoft.com/zh-hans/)VS是一个基本完整的开发工具集它包括了整个软件生命周期中所需要的大部分工具如UML工具、代码管控工具、集成开发环境(IDE)等等,可完美支持 C#、C++、Python、JavaScript、Node.js、Visual Basic、HTML 等流行的编程语言。
[VS Codium](https://github.com/VSCodium/vscodium)Visual Studio Code也称为VS Code是一款支持LinuxWindows和macOS的代码编辑器。它既能编辑简单文本也能像集成开发环境IDE一样管理整个代码库。它还可以通过插件进行扩展被广泛认为是一个可靠的文本编辑器轻松打败其他编辑器,而VS Codium是一款开源的Vscode去除了Trakcer和远程报告功能和可能侵犯你隐私的功能。
## 使用终端工具
在开发的时候我们常常遇到需要打开多个终端的情景那么有没有一款工具可以将SSH/WSL/telnet/SFTP/串口通信一网打尽呢?
[MobaXterm](https://mobaxterm.mobatek.net/download.html)一款功能极其强大的远程连接工具支持SSH、X11转发、串口通信等多种连接方式。它不仅可以用于远程连接Linux服务器还可以模拟多个终端实现多任务并行操作。此外MobaXterm还提供了文件上传下载、终端模拟等实用功能。
[electerm](https://github.com/electerm/electerm)一款开源跨平台的SSH桌面终端管理软件中文版Electerm 支持全平台 Linuxmacwin它还可以帮助用户将其所有书签主题和快速命令同步到 GitHub secret gist它支持用户使用其文件管理器编辑远程文件执行各种与终端相关的文件同时还支持 SSH 和 SFTP 网络协议。

View File

@ -0,0 +1,147 @@
+++
title = "乱七八糟:Windows激活那些事"
date = 2024-05-25
[taxonomies]
tags = ["乱七八糟","Windows"]
+++
前言 Windows的正版售价十分昂贵2025年的今天大部分人都使用着OEM厂商自带的windows系统或自己想办法激活那么激活到底是什么原理
<!-- more -->
## **一.分类:功能与渠道**
一般情况下提到Windows和Office的版本是按功能分类的
- 标准版Standard
- 初级版Starter
- 家庭基础版Home Basic
- 家庭高级版Home Premium
- 专业版Professional
- 企业版Enterprise
- 旗舰版Ultimate
- 教育版Education
- 移动版Mobile等等。
在按功能划分的基础上,根据销售渠道又细分出以下几种不同版本,激活方式与之对应,激活原理也各不相同:
- 零售版Retail个人单独购买一般是盒装光盘配发一个激活码
- 批量版VOLVolume Licensing for Organizations企业批量购买提供了方便大量激活的方案
- 厂商版OEMOriginal Equipment Manufacturer随电脑整机附赠主板BIOS内嵌激活信息
---
## **二.激活方法和原理**
### **零售(Retail)激活**
零售版 Windows 和 Office 的激活机制可以通俗地类比为在商店购买记事本:用户支付费用获得记事本,如何使用由用户决定。
- **试用期与激活码输入**
安装零售版后,系统会有一段试用期。用户需进入激活界面,输入零售版激活码。激活组件会验证激活码的正确性,并根据激活码和硬件信息生成 Installation IDIID
- **激活方式**
- **网络激活**:系统自动将 IID 发送至微软服务器,服务器校验后生成 Confirmation IDCID并返回激活组件完成验证后激活成功。
- **电话激活**:用户拨打微软电话,手动输入 IID并根据语音提供的 CID 填入激活界面完成激活。
- **服务器记录与限制**
微软服务器会记录硬件信息和激活码信息。如果激活码使用次数过多,可能被限制为仅电话激活;若激活的电脑数量超标,则激活码会被封禁,无法再使用。尽管微软封禁激活码,但违规泄露的新激活码常被二手商以低价出售。
- **激活机制的技术特性**
零售版激活依赖微软服务器的校验,采用不对称加密技术:公钥在系统中,私钥在服务器上。用户只能校验 CID无法从 IID 计算 CID。这使得激活必须经过服务器验证。
- **盗版激活手段**
- **购买盗版激活码**:通过二手商获取违规泄露的激活码。
- **暴力破解**:修改系统激活组件绕过校验,但更新可能导致破解失效,且可能影响系统稳定性,因此已逐渐被淘汰。
### **VOL激活**
VOL版有两种激活方式一种是MAK激活Multiple Activation Key另一种是KMS激活Key Management Service
- **MAK激活流程** MAK激活的流程类似于零售版但激活码属性有所不同。每个 MAK 激活码预设了有限的可用次数,可以用于激活任意数量的电脑。
- 用户输入 MAK 激活码。
- 系统通过网络向微软服务器发送激活请求。
- 微软服务器返回 CID 并完成激活,同时将激活码的可用次数减 1。
- **特点**
- 激活码的使用次数有限,用尽后激活码失效。
- 激活成功后永久生效,无需重新激活。
- MAK 激活码常因违规泄露成为盗版交易的高风险区。
- **KMS激活流程** KMS 激活通过本地搭建的激活服务器实现,适合需要批量激活的企业或大规模组织。
- 系统管理员搭建 KMS 服务器(激活服务端)。
- 客户端输入 KMS 激活码GVLK并配置 KMS 服务端地址。
- 客户端发送包含系统版本、激活码信息、硬件信息等内容的激活请求到服务器。
- 服务器校验激活请求并返回激活结果。
- 客户端读取结果,完成激活。
- **特点**
- 可以自行搭建激活服务器;
- 激活有效期为 **180 天**,到期后需重新激活。
- 适用于局域网环境,可通过 KMS 批量管理客户端设备。
> 没有花钱购买微软授权擅自使用KMS激活仍是盗版个人使用微软懒得管企业这么搞会吃官司。
> 弊端就是必须每180天再激活一次成功激活后你的电脑就会变成团队电脑。KMS工具开发者就是管理员。不要不以为然管理员能够执行的操作权限非常高拷贝个数据收集个信息简直是小菜一碟更厉害的还能直接reset你的系统而保留KMS的权限。说不定哪天KMS的开发者不开心就帮你清空一下电脑。
### **OEM激活**
OEM激活Original Equipment Manufacturer是三种激活方式中最特殊的因为它**完全脱离了联网认证**,实现了高度绑定于硬件的激活机制。
- **OEM激活机制**:生产厂商在主板 BIOS 芯片中加入 **SLIC 信息Software Licensing Internal Code**,同时在操作系统中预装对应的**厂商证书**和一个 **OEM 激活码**
- 当电脑启动时BIOS 会将 SLIC 信息加载到内存。
- 操作系统接管后,从内存中读取 SLIC 数据,与厂商证书和激活码进行匹配验证。
- 验证通过后,系统被视为已激活,无需联网认证。
- **特点**
- 激活严格绑定硬件(主板)。
- 不需联网认证,减少了服务器交互过程。
- 系统重装后仍能自动激活,只要硬件没有更改。
- **破解与改装方法**:由于 OEM 激活省略了联网步骤,激活逻辑被高度依赖硬件信息,这也给破解提供了多个切入点:
- **硬改流**
- 直接刷写主板 BIOS将 SLIC 信息写入其中,使主板伪装成具备 OEM 激活能力的硬件。缺点:风险较高,操作不当可能损坏 BIOS导致主板无法启动。
- **暗改流**
- 找到内存中存储 BIOS 数据的位置,将 SLIC 信息直接注入内存。优点:无需修改主板 BIOS操作更灵活。缺点仅在系统运行时生效重启或关机后需重新注入。
- **破解流**
- 修改操作系统读取 BIOS 数据的逻辑,让系统从伪造的 SLIC 数据中完成验证。
- 配合导入对应的厂商证书和 OEM 激活码,实现伪装成 OEM 激活。操作相对简单,适用于多种硬件。缺点:可能影响系统稳定性,且破解工具质量参差不齐。
### **数字权利激活**
微软在 Windows 10 中推出了全新的激活方式——**数字激活Digital License Activation**。这种激活方式彻底改变了传统激活依赖激活码或联网验证的逻辑,通过绑定硬件信息和微软账户,为用户提供更加便捷的体验,同时也带来了新的破解手段。
- **数字激活的原理**
- 用户需通过传统方式如零售版激活、MAK激活、OEM激活激活系统。
- 激活成功后系统会将电脑硬件信息HWID、激活凭证和微软账户绑定。
- 激活凭证会上传至微软服务器,记录为永久激活状态。
- 以后在同一台电脑上重装系统时,只需登录微软账户,系统即可自动完成激活。
- **特点**
- 激活状态与电脑硬件绑定,与激活码无直接关系。
- 用户无需保留激活码或再次手动激活,方便重装系统。
- 对硬件改动较大(如更换主板)时,需重新激活。
- **数字激活的漏洞利用**
微软为支持用户从低版本(如 Win7/Win8升级到 Win10引入了系统升级继承激活状态的规则这成为数字激活漏洞的核心如果升级前的系统已经激活无论激活手段是否合法升级后的 Win10 系统都会继承激活状态。即使此前是通过盗版手段激活的系统,也能顺利完成升级并绑定数字激活状态。
- **关键组件gatherosstate.exe**
- 此组件在升级过程中验证当前系统是否激活。
- 验证通过后,生成一份与电脑硬件相关的 GenuineTicket.xml 文件,包含 HWIDHardware Identifier等信息。
- 升级后的系统会导入该文件,将激活信息绑定至微软服务器,实现数字激活。
- **数字激活的破解演变**
- **手动操作版本**:从 Win10 安装包中提取 gatherosstate.exe将其放到 Win7/Win8 系统中,利用任何激活手段(如 OEM 激活或暴力破解)骗过 gatherosstate生成 GenuineTicket.xml。在 Win10 系统中导入该文件,重启联网,即可激活系统。
- **进阶版数字激活工具**:集成破解的激活组件(如 slc.dll跳过预先激活 Win7/Win8 的步骤,直接生成 GenuineTicket.xml。本质等同于暴力破解只是流程更加自动化。
- **HWID Key 的出现**:经过逆向分析,发现 gatherosstate.exe 完全在本地运行,生成 HWID 的算法无需联网验证。专业人士破解并提取了生成 HWID 的算法,开发出 HWID Key 工具,能够在任意电脑上生成有效的 HWID 并完成数字激活。用户无需再通过升级路径或手动操作,随时随地实现数字激活。
> 最新消息MAS团队破解了SSP现在可以使用[TSforge](https://massgrave.dev/blog/tsforge)来激活自 Windows 7 以来每个版本的 Windows 的每个版本,以及自 Office 2013 以来的每个 Windows 插件和 Office 版本!

58
content/windows-iso.md Normal file
View File

@ -0,0 +1,58 @@
+++
title = "乱七八糟:Windows封装与全自动安装"
date = 2024-05-29
[taxonomies]
tags = ["乱七八糟","Windows"]
+++
前言 由于厂商默认安装windows家庭版导致各种问题频发,这里作者封装了一个开箱即用的全自动安装激活和优化的Windows11镜像。
<!-- more -->
**Dich-OS base on zh-cn_windows_11_business_23h2**
**实现了以下功能**:
- [x] 绕过 Windows 11 要求检查(TPM/安全启动等)
- [x] 允许在没有互联网连接的情况下安装 Windows 11
- [x] 随机生成的计算机名称,例如:DESKTOP-ZFAH8Z2
- [x] 在OOBE阶段自动激活Windows(专业工作站版本)
- [x] 禁用 Windows 更新*
- [x] 删除了默认应用程序*
- [x] 禁用 Windows Defender
- [x] 在 Windows 11 中使用经典菜单,而不是二级菜单
- [x] 始终显示文件扩展名
- [x] 打开文件资源管理器到'此电脑'而不是'快速访问'
- [x] 任务栏中隐藏搜索框,Task view 和小部件
- [x] 用户密码不会过期
- [x] 强化 ACL
- [x] 禁用快速启动
- [x] 启用长路径
- [x] 启用远程桌面服务 (RDP)
- [x] 阻止 Windows Update 重新启动您的计算机*
- [x] 阻止设备 BitLocker 加密
- [x] 删除空 C:\Windows.old 文件夹
- [x] 自动将ISO中的Source\$OEM$\Setup\Scripts\Files文件夹中的软件放到桌面*
- [x] 保留Windows 安装过程中以交互方式对磁盘进行分区
- [x] 保留在 Windows 安装过程中以交互方式添加本地(“脱机”)用户
**PS**:
- 禁用自动更新是创建一个名为 PauseWindowsUpdate 的计划任务,一次又一次地暂停更新一周.如果要运行 Windows 更新一次,请单击 “设置”中的“恢复更新 ”.
- 删除默认应用程序,但保留了记事本,照片,PowerShell,Windows Terminal ,Windows Media Player (classic) ,Calculator , Clock , Xbox Apps(游戏手柄用)
- 这会创建一个计划任务,诱使 Windows 认为设备一直在使用中,即使更新也不会突然关机.
- 可以将要用的软件安装包放入该文件夹中,会自动放到桌面.
**感谢以下项目**:
- [unattend-generator](https://github.com/cschneegans/unattend-generator/)
- [HEU_KMS_Activator](https://github.com/zbezj/HEU_KMS_Activator)
- [Microsoft-Activation-Scripts](https://github.com/massgravel/Microsoft-Activation-Scripts)
**SHA-256:5920ca1b839c2823cad5223cdff39671784d98d18da03fa4377a362ad480ce54**
**下载链接:**[这里](https://gitea.dich.bid/dichgrem/Dich-OS/releases/tag/2.0.0)

View File

@ -0,0 +1,74 @@
+++
title = "乱七八糟:Windows优化流程"
date = 2024-05-26
[taxonomies]
tags = ["乱七八糟","Windows"]
+++
前言 由于厂商默认安装windows家庭版导致各种问题频发,这里对 widnows 优化流程做一个总结.适用于已经激活并使用了厂商自带的系统或想重新安装系统的朋友。
<!-- more -->
## **一.设备级:**
- 关闭 BIOS 安全启动,快速启动
- 解锁 BitLocker
- 删除 OEM 分区,恢复简洁的设备分区
## **二.系统级:**
- 家庭版升级为专业工作站版
- 将用户名改为非中文
- 退出云端账号,杀死家庭组策略
- 激活 Windows 与 MS office
- 停止自动更新并恢复单级菜单
## **三.驱动级:**
- 如自带系统有驱动包,先进系统拿出然后再安装新系统;
[AMD](https://www.amd.com/en/support/download/drivers.html)
[Intel](https://www.intel.cn/content/www/cn/zh/support/detect.html)
[NVIDIA](https://www.nvidia.cn/geforce/drivers/)
## **四.软件级:**
- 删除自带牛马以及不必要的管家类软件.
- (可选)安装常用软件,包括:
- 软件卸载(Geek)
- 浏览器(Firefox/Chrome)
- 解压工具(Peazip)
- 下载工具(gopeed)
- 音视频播放器(VLC)
- 密码管理工具(KeepassXC)
- 搜索与截图工具(Everything/ShareX)
- 其他(可选)
## **五.设置级**
- 设置简洁高效的浏览器
- 优化桌面布局与任务栏布局
- 关闭开机自启软件
- 关闭 Windows Defender 等烦人的通知
## **六.测试级(可选)**
- 查看PC型号与配置是否相同
- 测试GPU/CPU/硬盘速率与使用时间
- 屏幕坏点/喇叭/蓝牙检测
- 网络测速
## 后记
有待补充.

View File

@ -0,0 +1,157 @@
+++
title = "乱七八糟:Windows常用脚本"
date = 2024-05-24
[taxonomies]
tags = ["乱七八糟","Windows"]
+++
前言 Windows操作系统作为全球最为普及的桌面操作系统之一其用户界面的设计非常经典但存在许多不足之处本篇记录一些常用脚本。
<!-- more -->
## **Windows11跳过联网激活 & 使用本地账号**
开机之前先断网然后输入Shift+F10会弹出命令行界面并输入
``
oobe\BypassNRO.cmd
``
回车之后会重启,之后就可以跳过联网了,选择
``
I don't have internet
``
即可。
## 激活windows
```
irm https://get.activated.win | iex
```
## **Win11关闭自动更新**
1.按Win+I打开Windows设置页面。
2.单击“更新和安全”>“Windows更新”然后在右侧详情页中选择“暂停更新7天”选项即可在此后7天内关闭Windows更新。
3.使用脚本彻底关闭更新
```
::Windows auomatic updates
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AutoInstallMinorUpdates /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AUOptions /t REG_DWORD /d 4 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 4 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v DisableWindowsUpdateAccess /t REG_DWORD /d 0 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v ElevateNonAdmins /t REG_DWORD /d 0 /f
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoWindowsUpdate /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\Internet Communication Management\Internet Communication" /v DisableWindowsUpdateAccess /t REG_DWORD /d 0 /f
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate /v DisableWindowsUpdateAccess /t REG_DWORD /d 0 /f
sc stop wuauserv
sc config wuauserv start=disabled
sc stop WaaSMedicSvc
sc config WaaSMedicSvc start=disabled
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InstallService\State /v AutoUpdateLastSuccessTime /t REG_SZ /d "2100-01-01T00:00:00+08:00" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseFeatureUpdatesStartTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseQualityUpdatesStartTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseUpdatesExpiryTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseFeatureUpdatesEndTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseQualityUpdatesEndTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f
```
将以上命令保存为.bat文件运行即可。
```
::Windows auomatic updates
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AutoInstallMinorUpdates /t REG_DWORD /d 0 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 0 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AUOptions /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 4 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v DisableWindowsUpdateAccess /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /v ElevateNonAdmins /t REG_DWORD /d 1 /f
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoWindowsUpdate /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\Internet Communication Management\Internet Communication" /v DisableWindowsUpdateAccess /t REG_DWORD /d 1 /f
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate /v DisableWindowsUpdateAccess /t REG_DWORD /d 1 /f
sc config wuauserv start=auto
sc start wuauserv
sc config WaaSMedicSvc start=auto
sc start WaaSMedicSvc
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InstallService\State /v AutoUpdateLastSuccessTime /t REG_SZ /d "2000-01-01T00:00:00+08:00" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseFeatureUpdatesStartTime /t REG_SZ /d "2000-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseQualityUpdatesStartTime /t REG_SZ /d "2000-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseUpdatesExpiryTime /t REG_SZ /d "2000-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseFeatureUpdatesEndTime /t REG_SZ /d "2000-01-01T00:00:00Z" /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseQualityUpdatesEndTime /t REG_SZ /d "2000-01-01T00:00:00Z" /f
pause
```
以上为恢复更新的脚本。
## **使用CMD恢复完整右键菜单**
Win11的`显示更多选项`怎么设置才能将其关闭,并恢复成Win10的状态呢系统内置的命令提示符CMD可以帮助我们完成这一任务另外请注意此操作仅适用于CMD并不适用于Windows PowerShell。
**步骤1.** 按**Win+S**打开搜索框,输入**cmd**并以管理员身份运行命令提示符。
**步骤2.** 输入以下命令并按**Enter**键执行。
```
reg add HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d “” /f
```
或者
```
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe
start explorer.exe
```
注意如果您想要重新打开Win11新样式的右键菜单的话以同样的方式在命令提示符中执行此命令
```
reg delete "HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
```
## **Win11添加开机自启动项方法**
选择“开始”按钮 ,然后滚动查找你希望在启动时运行的应用。
右键单击该应用,选择“更多”,然后选择“打开文件位置”。此操作会打开保存应用快捷方式的位置。如果没有“打开文件位置”选项,这意味着该应用无法在启动时运行。
文件位置打开后按win+ R键入“shell:startup”然后选择“确定”。这将打开“启动”文件夹。
将该应用的快捷方式从文件位置复制并粘贴到“启动”文件夹中,即添加启动项成功。
## Windows 指定时间服务器&&开机自动校准
- 打开日期和时间设置:
右键点击任务栏上的时间,选择 "调整日期/时间"。
在 日期和时间 窗口中,点击 "互联网时间" 标签。
- 选择时间服务器:
点击 "更改设置…" 按钮。
在弹出的对话框中,勾选**同步时钟与 Internet 时间服务器**,然后在 "服务器" 输入框中填写你想要的时间服务器,例如:
time.windows.com微软默认服务器
time.nist.gov美国国家标准技术研究院的时间服务器
pool.ntp.org一个公共的 NTP 时间服务器池)
- 应用更改:点击 "更新现在",然后 "确定" 保存设置。
Windows 会默认每隔一段时间(大约一周)同步时间,但如果你想确保系统在开机时自动同步时间,可以通过以下方法:
- 打开任务计划程序:
在开始菜单中搜索 "任务计划程序" 并打开。
- 创建新任务:
在右侧点击 "创建基本任务"。
输入任务名称(例如:“时间同步”),点击 下一步。
- 选择触发器:
选择 "当计算机启动时",然后点击 下一步。
- 设置操作:
选择 "启动程序",点击 下一步。
在 "程序或脚本" 中输入 cmd在 "添加参数" 中输入:
```
/c w32tm /resync
```
这条命令会在开机时触发 Windows 时间服务同步。
- 完成设置:点击 完成,即可。
- 如果有linux/win双系统可以让 Windows 使用 UTC 作为硬件时钟时间:
```
# 在 Windows 中以管理员权限运行命令提示符,执行:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f
```

10
justfile Normal file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env -S just --justfile
# ^ A shebang isn't required, but allows a justfile to be executed
# like a script, with `./justfile build`, for example.
# Task thet using Zola and Pagefindo build site
build:
# Build the si\
te with Zola
zola build && npx pagefind --site public

3
macros/date.html Normal file
View File

@ -0,0 +1,3 @@
{% macro now_year() %}
{{ now() | date(format="%Y") }}
{% endmacro %}

94
macros/head.html Normal file
View File

@ -0,0 +1,94 @@
{% import "macros/title.html" as title_macros -%}
{% macro head(config) %}
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="{{ get_url(path="style.css", trailing_slash=false) | safe }}">
{%- if config.extra.accent_color %}
<link rel="stylesheet" href="{{ get_url(path="color/" ~ config.extra.accent_color ~ ".css", trailing_slash=false) | safe }}">
{% else %}
<link rel="stylesheet" href="{{ get_url(path="color/blue.css", trailing_slash=false) | safe }}">
{% endif -%}
{%- if config.extra.background_color %}
{%- if config.extra.accent_color and config.extra.background_color != config.extra.accent_color %}
<link rel="stylesheet" href="{{ get_url(path="color/background_" ~ config.extra.background_color ~ ".css", trailing_slash=false) | safe }}">
{% endif -%}
{% endif -%}
{%- if config.extra.use_full_hack_font %}
<link rel="stylesheet" href="{{ get_url(path="font-hack.css", trailing_slash=false) | safe }}">
{% else %}
<link rel="stylesheet" href="{{ get_url(path="font-hack-subset.css", trailing_slash=false) | safe }}">
{% endif -%}
{% endmacro head %}
{# Extra Meta tags for OpenGraph and Twitter cards #}
{% macro open_graph(config) %}
{%- if page %}
{%- set permalink = page.permalink %}
{%- set title = title_macros::title(page_title=page.title, main_title=config.title) %}
{%- set description = page.description %}
{%- set type = "article" %}
{%- if page.extra and page.extra.og_image %}
{%- if page.colocated_path %}
{%- set og_image = page.path ~ page.extra.og_image %}
{%- else %}
{%- set og_image = page.extra.og_image %}
{% endif %}
{%- elif config.extra.default_og_image %}
{%- set og_image = config.extra.default_og_image %}
{%- endif %}
{%- elif section %}
{%- set permalink = section.permalink %}
{%- set title = title_macros::title(page_title=section.title, main_title=config.title) %}
{%- set description = section.description | default(value=config.description) %}
{%- set type = "website" %}
{%- if section.extra and section.extra.og_image %}
{%- set og_image = section.extra.og_image %}
{%- elif config.extra.default_og_image %}
{%- set og_image = config.extra.default_og_image %}
{%- endif %}
{%- else %}
{# For 404 and taxonomy pages #}
{%- if taxonomy %}
{% if term %}
{%- set permalink = term.permalink %}
{%- set title = title_macros::title(page_title=term.name, main_title=config.title) %}
{%- set description = "All posts tagged " ~ term.name %}
{% else %}
{%- set permalink = config.base_url ~ "/" ~ taxonomy.slug %}
{%- set title = title_macros::title(page_title=taxonomy.name, main_title=config.title) %}
{%- set description = "All " ~ taxonomy.name %}
{% endif %}
{%- else %}
{%- set permalink = config.base_url %}
{%- set title = title_macros::title(page_title="404", main_title=config.title) %}
{%- set description = "Page not found" %}
{%- endif %}
{%- set type = "website" %}
{%- if config.extra.default_og_image %}
{%- set og_image = config.extra.default_og_image %}
{%- endif %}
{%- endif -%}{# #}
<meta name="description" content="{{ description | safe }}">
<meta property="og:description" content="{{ description | safe }}">
<meta property="og:title" content="{{ title | safe }}">
<meta property="og:type" content="{{ type }}">
<meta property="og:url" content="{{ permalink | safe }}">
{% if og_image %}
<meta property="og:image" content="{{ get_url(path=og_image) }}">
<meta name="twitter:image" content="{{ get_url(path=og_image) }}">
{% endif %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:description" content="{{ description | safe }}">
<meta name="twitter:title" content="{{ title | safe }}">
<meta property="twitter:domain" content="{{ config.base_url | replace(from="https://", to="") }}">
<meta property="twitter:url" content="{{ permalink | safe }}">
{% endmacro open_graph %}

52
macros/menu.html Normal file
View File

@ -0,0 +1,52 @@
{% macro menu(config, current_path) %}
{%- set current_item = false -%}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
{%- for item in menu_items %}
{%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%}
{%- set is_current = current_url == abs_item_url ~ "/"
or current_url is starting_with(abs_item_url)
-%}
{%- set is_base = abs_item_url == config.base_url
or abs_item_url == config.base_url ~ "/"
-%}
{%- if is_base %}
{%- set_global base_item = item -%}
{% endif -%}
{%- if is_current and not is_base %}
{%- set_global current_item = item -%}
{% endif -%}
{% endfor -%}
{%- if not current_item and base_item %}
{# Did not match any menu URLs -- assume it's a blog post #}
{%- set current_item = base_item -%}
{% endif -%}
{{ menu_macros::menu_for(config=config, current_item=current_item) }}
{% endif -%}
{% endmacro menu %}
{% macro menu_for(config, current_item) %}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
<nav class="menu">
<ul class="menu__inner">
{%- for item in menu_items %}
<li {%- if current_item and current_item == item %} class="active" {%- endif %}>
{%- if item.newtab -%}
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}" target="_blank" rel="noopener noreferrer">{{ item.name | safe }}</a>
{%- else -%}
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}">{{ item.name | safe }}</a>
{%- endif -%}
</li>
{% endfor -%}
</ul>
</nav>
{% endif -%}
{% endmacro menu %}

108
macros/post.html Normal file
View File

@ -0,0 +1,108 @@
{% macro content(page, summary, show_only_description) %}
{%- if show_only_description %}
<div class="post-content">
{{ page.description | safe }}
</div>
{% elif summary and page.summary %}
<div class="post-content">
{{ page.summary | safe }}
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="{{ page.permalink | safe }}">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
{% else %}
{#- full content -#}
<div class="post-content">
{{ page.content | safe }}
</div>
{%- endif %}
{% endmacro content %}
{% macro date(page) %}
<span class="post-date">
{%- if page.date %}
{{ page.date | date(format="%Y-%m-%d") }}
{% endif -%}
</span>
{% endmacro post_date %}
{% macro earlier_later(page) %}
{%- if config.extra.enable_post_view_navigation and page.lower or page.higher %}
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">{{ config.extra.post_view_navigation_prompt }}</span>
<hr />
</div>
<div class="pagination__buttons">
{%- if page.higher %}
<span class="button previous">
<a href="{{ page.higher.permalink | safe }}">
<span class="button__icon"></span>&nbsp;
<span class="button__text">{{ page.higher.title }}</span>
</a>
</span>
{% endif %}
{% if page.lower %}
<span class="button next">
<a href="{{ page.lower.permalink | safe }}">
<span class="button__text">{{ page.lower.title }}</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
{% endif -%}
</div>
</div>
{% endif -%}
{% endmacro earlier_later %}
{% macro header(page) %}
<h1 class="post-title"><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
<div class="post-meta-inline">
{{ post_macros::date(page=page) }}
</div>
{{ post_macros::tags(page=page) }}
{% endmacro header %}
{% macro list_posts(pages) %}
<ul>
{%- for page in pages %}
{%- if page.draft %}
{% continue %}
{% endif -%}
<li class="post-list">
<a href="{{ page.permalink | safe }}">
<span class="post-date">{{ page.date }}</span>
:: <span class="post-list-title">{{ page.title }}</span></a>
{{ post_macros::tags(page=page, short=true) }}
</li>
{% endfor -%}
</ul>
{% endmacro list_posts %}
{% macro tags(page, short=false) %}
{%- if page.taxonomies and page.taxonomies.tags %}
<span class="post-tags-inline">
{%- if short %}
::
{%- set sep = "," -%}
{% else %}
:: tags:&nbsp;
{%- set sep = "&nbsp;" -%}
{% endif -%}
{%- for tag in page.taxonomies.tags | sort | unique(case_sensitive=false) %}
<a class="post-tag" href="{{ get_taxonomy_url(kind='tags', name=tag) | safe }}">#{{ tag }}</a>
{%- if not loop.last %}{{ sep | safe }}{% endif -%}
{% endfor -%}
</span>
{% endif -%}
{% endmacro tags %}

17
macros/title.html Normal file
View File

@ -0,0 +1,17 @@
{% macro title(page_title, main_title) %}
{%- if config.extra.page_titles and config.extra.page_titles == "combined" -%}
{%- if page_title -%}
{{ page_title }} | {{ main_title }}
{%- else -%}
{{ main_title }}
{%- endif -%}
{%- elif config.extra.page_titles and config.extra.page_titles == "page_only" -%}
{%- if page_title -%}
{{ page_title }}
{%- else -%}
{{ main_title }}
{%- endif -%}
{%- else -%}
{{ main_title }}
{%- endif -%}
{% endmacro title %}

92
sass/buttons.scss Normal file
View File

@ -0,0 +1,92 @@
.button-container {
display: table;
margin-left: auto;
margin-right: auto;
}
button,
.button,
a.button {
position: relative;
display: flex;
align-items: center;
justify-content: center;
padding: 8px 18px;
margin-bottom: 5px;
text-align: center;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
/* variants */
&.outline {
background: transparent;
box-shadow: none;
padding: 8px 18px;
:hover {
transform: none;
box-shadow: none;
}
}
&.primary {
box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08);
&:hover {
box-shadow: 0 2px 6px rgba(50, 50, 93, .21), 0 1px 3px rgba(0, 0, 0, .08);
}
}
&.link {
background: none;
font-size: 1rem;
}
/* sizes */
&.small {
font-size: .8rem;
}
&.wide {
min-width: 200px;
padding: 14px 24px;
}
}
a.read-more,
a.read-more:hover,
a.read-more:active {
display: inline-flex;
background: none;
box-shadow: none;
padding: 0;
margin: 20px 0;
max-width: 100%;
}
.code-toolbar {
margin-bottom: 20px;
.toolbar-item a {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 3px 8px;
margin-bottom: 5px;
text-align: center;
font-size: 13px;
font-weight: 500;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
}
}

View File

@ -0,0 +1,14 @@
:root {
@media (prefers-color-scheme: light) {
--background: white;
--color: #101010;
}
@media (prefers-color-scheme: dark) {
--background: #101010;
--color: #A9B7C6;
}
}

View File

@ -0,0 +1,3 @@
:root {
--background: #1D212C;
}

View File

@ -0,0 +1,5 @@
:root {
--background: #101010;
--color: #A9B7C6;
}

View File

@ -0,0 +1,3 @@
:root {
--background: #1F222A;
}

View File

@ -0,0 +1,3 @@
:root {
--background: #f0f0f0;
}

View File

@ -0,0 +1,3 @@
:root {
--background: #222129;
}

Some files were not shown because too many files have changed in this diff Show More