常见场景:
- 本地代码已经修改,但还没
commit - 同事已经
push到远端 - 想同步代码,又不想丢自己的修改
推荐做法:使用 git stash
推荐流程(最稳)
git stash
git pull
git stash pop
commitpush 到远端推荐做法:使用 git stash
git stash
git pull
git stash pop
24年12月份的时候网上闹得沸沸扬扬说不能用了。
我也收到了ocbc发的邮件,通知这张卡12月就不能使用了,但我没当回事。
因为我第一次跨国转账只转了1000元人民币进去,而且用了几次,所以剩了几百元,我就没当回事。
这个卡最开始我用来购买chatgpt。
后面我用这张卡绑定了我的美区苹果账号,每个月会支付苹果的icloud费用,一直也正常使用
25年的8月份金额不多了,我又通过工商银行往里面转进去了1000元人民币,工商银行收费40,到账少了8个新币,所以总费用是80元人民币,根网上说的费用一样。
所以这张卡是正常可以使用的。
这张卡一共有三个账户,分别是360,GSA,STS
这张卡的360账户每个月收费2新元,也就是10元人民币。
STS没有放钱,暂时也没收费,一直也没使用过,也没有自动销户
GSA没有费用
众所周知的原因docker在国内不能正常使用
今天我在树莓派上安装了docker,需要增加以下配置
/etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","1.1.1.1"]
}
8.8.8.8是谷歌的DNS服务
1.1.1.1是cloudflare的DNS服务
然后重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
测试hello-world
运行一下hello-world
docker run --rm hello-world
//或者拉一下hello-world的镜像
docker image pull hello-world
docker image ls
按道理应该成功了
export Ali_Key="<key>"
export Ali_Secret="<secret>"
颁发
./acme.sh --issue --dns dns_ali -d example.com -d *.example.com --keylength 2048
更新
./acme.sh --renew --dns dns_ali -d example.com -d *.example.com --keylength 2048
Git LFS(Git Large File Storage)是 Git 的一个扩展,专门用于管理大文件(如图片、视频、音频文件等)。它允许 Git 仓库只保存大文件的指针,而将实际文件存储在外部服务器中,这样可以有效减小 Git 仓库的体积。
最常见的方式是通过 Homebrew 来安装 Git LFS。Homebrew 是 macOS 上非常流行的包管理工具,可以方便地安装和管理软件包。
在终端中运行以下命令来安装 Git LFS:
bash复制编辑brew install git-lfs
unknown or unsupported macOS version: :sequoia如果你在执行安装时遇到以下错误:
typescript复制编辑Error: unknown or unsupported macOS version: :sequoia
这表示你的 macOS 版本被标记为 :sequoia,这是一个 Homebrew 无法识别或不支持的 macOS 版本代号。
可以使用以下命令检查当前的 macOS 版本:
bash复制编辑sw_vers
这会输出类似下面的结果:
makefile复制编辑ProductName: macOS
ProductVersion: 13.0
BuildVersion: 22A380
通过检查 ProductVersion 字段,确认你使用的 macOS 版本。如果是较新的版本,可能需要等待 Homebrew 更新对该版本的支持。
如果你无法通过 Homebrew 安装 Git LFS,仍然可以通过 Git LFS 官方方式手动安装。
访问 Git LFS 官网 下载适用于 macOS 的 .pkg 安装包。
下载并双击 .pkg 安装包进行安装。按照屏幕上的提示完成安装过程。
安装完成后,打开终端并运行以下命令,初始化 Git LFS:
bash复制编辑git lfs install
这样,Git LFS 就成功安装并配置好了。
如果你愿意依然使用 Homebrew,可以尝试更新 Homebrew,然后再安装 Git LFS:
bash复制编辑brew update
brew upgrade
brew install git-lfs
如果更新 Homebrew 后仍然无法安装 Git LFS,建议使用手动安装方法。
如果你遇到 unknown or unsupported macOS version: :sequoia 错误,说明你的 macOS 版本可能是新发布的,Homebrew 还未完全支持。可以尝试以下几种方式:
.pkg 文件来安装。安装完成后,别忘了使用 git lfs install 初始化 Git LFS,这样你就可以开始使用 Git LFS 来管理大文件了。
ES模块(ECMAScript Modules, ESM)是 JavaScript 提供的一种模块化机制,它允许你在不同的文件之间共享代码。ES模块采用 import 和 export 语法来处理模块导入和导出。
export)你可以导出一个变量、函数、类、对象等,供其他模块使用。
将一个函数或变量导出:
// utils.js
const greeting = 'Hello, world!';
export function sayHello() {
console.log(greeting);
}
一次导出多个变量、函数等:
// utils.js
export const greeting = 'Hello, world!';
export function sayHello() {
console.log(greeting);
}
default)你可以指定一个模块的默认导出,使得导入时可以使用任何名称:
// utils.js
const greeting = 'Hello, world!';
export default function sayHello() {
console.log(greeting);
}
import)在另一个模块中使用 import 语句来引入已经导出的内容。
从另一个模块导入一个特定的导出:
// app.js
import { sayHello } from './utils.js';
sayHello(); // 输出: Hello, world!
从一个模块导入多个导出:
// app.js
import { greeting, sayHello } from './utils.js';
console.log(greeting); // 输出: Hello, world!
sayHello(); // 输出: Hello, world!
导入默认导出的内容,通常可以起一个自定义名称:
// app.js
import sayHello from './utils.js';
sayHello(); // 输出: Hello, world!
如果模块中有很多导出,可以使用 * as 导入所有内容:
// app.js
import * as utils from './utils.js';
console.log(utils.greeting); // 输出: Hello, world!
utils.sayHello(); // 输出: Hello, world!
./ 或 ../ 开头。node_modules 导入的包,则不需要路径。例如:
import express from 'express'; // 从 node_modules 导入
import { sayHello } from './utils.js'; // 本地模块
假设你有两个文件:utils.js 和 app.js。
utils.js(定义模块内容):
// utils.js
export const greeting = 'Hello, world!';
export function sayHello() {
console.log(greeting);
}
export default function greetPerson(name) {
console.log(`Hello, ${name}!`);
}
app.js(导入并使用模块):
// app.js
import greetPerson, { greeting, sayHello } from './utils.js';
console.log(greeting); // 输出: Hello, world!
sayHello(); // 输出: Hello, world!
greetPerson('Alice'); // 输出: Hello, Alice!
package.json确保你的项目的 package.json 配置了 "type": "module",否则 Node.js 会将 .js 文件当作 CommonJS 处理。
{
"type": "module"
}
export 用于在模块中导出函数、变量或对象。import 用于在其他模块中导入已经导出的内容。export default)来指定一个模块的主要内容。我有一台日本的aws服务器,ip经常不能访问,好在aws可以免费更换静态ip,但是随之而来的问题来了,更换完ip,域名解析也得修改。
可不可以每次我修改完服务器的ip,域名解析也自动修改?
当然可以!
可以在服务器上写一个脚本,每隔5分钟,检查一下服务器的公网ip和域名解析的ip是否一致,不一致的话修改成一致,一样的话就不用操作
代码语言 NODEJS
因为域名是在cloudflare上注册,所以在npm库里搜索了一下有没有现成的工具,这样就避免重复制造轮子
我搜关键词 cloudflare ddns
找到了一个叫cloudflare-ddns-sync的npm包
在之前的文章中已经提到过,这里不再赘述,需要的朋友可以查看链接
新建项目文件夹并进入项目
mkdir cloudflare-ddns && cd cloudflare-ddns
初始化项目
npm init -y
npm安装需要的包
npm install cloudflare-ddns-sync
vim index.mjs
import Cddnss from 'cloudflare-ddns-sync'
//实例化
const cddnss = new Cddnss({
token: '你自己的cloudflare网站的token',
});
// 获取本地ip
const localIp = await cddnss.getIp()
//获取解析的域名
const recordsOnline = await cddnss.getRecordDataForDomain('youdomain.com')
const oneRecordArr = recordsOnline.filter(record=>{
return record.name == 'youdomain.com' && record.type == 'A'
})
// dns解析的ip
const onlineIp = oneRecordArr[0].content
console.log('本地ip',localIp)
console.log('dns解析的ip',onlineIp)
if(localIp != onlineIp ){
const myRecord = {
name: "youdomain.com",
type: "A",
content: localIp
}
const result = await cddnss.syncRecord(myRecord)
}
查看当前定时任务
crontab -l
编辑定时任务
crontab -e
//分 时 天 月 周
*/5 * * * * node /path/to/cloudflare-ddns/index.mjs
这里需要注意一个问题就是,有可能定时任务没有找见node,没有执行成功,我们需要找到node的目录,并加入到全局路径中$PATH
which node
nvm的全称是node version manage,字面意思node版本管理
github地址是 https://github.com/nvm-sh/nvm
nvm官方对nvm的介绍
nvm allows you to quickly install and use different versions of node via the command line.
翻译一下就是:nvm允许你快速通过命令行安装node的不同版本
官方也是很贴心的给出了示例代码
$ nvm use 16
Now using node v16.9.1 (npm v7.21.1)
$ node -v
v16.9.1
$ nvm use 14
Now using node v14.18.0 (npm v6.14.15)
$ node -v
v14.18.0
$ nvm install 12
Now using node v12.22.6 (npm v6.14.5)
$ node -v
v12.22.6
现在是2024年他的版本是v0.40.1,官方给出的命令行如下,随着时间流逝,可能在你查看这篇文章时它的版本已经升级,可以去官方的github找 https://github.com/nvm-sh/nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
or
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
安装完nvm后,检查是否安装成功
有时候需要退出命令行工具,重新登陆试试下面的命令,检查是否安装成功
nvm -h
如果有输出表示安装成功
nvm install lts
LTS 代表 Long Term Support,即长期支持版本。
这个就是最新的稳定版本
nvm install 16
安装版本16的node
html部分
<video id="player" controls>
<source src="path/to/video.mp4" type="video/mp4" />
</video>
js引入plyr
import Plyr from 'plyr';
import 'plyr/dist/plyr.css'
按照文档,接下来我们应该new一下
const player = new Plyr('#player')
但这样是有问题的,视频虽然可以现实,但无法播放
正确的操作如下 需要文档加载完再实例化播放器
import Plyr from 'plyr';
import 'plyr/dist/plyr.css'
document.addEventListener('DOMContentLoaded', () => {
const player = new Plyr('#player',{})
});
什么是DDNS?
就是动态修改域名解析。
我家的宽带虽然没有公网ipv4,但运营商分配了ipv6,也就是通过ipv6地址可以直接访问家里的设备
ipv6地址我也记不住,我就把ipv6的地址解析到一个域,这样方便记忆
但是 运营商分配的ipv6不是固定的,没隔一段时间就变,每次手动修改域名的ipv6地址就显得有些蠢
所以要是有一个程序,每5分钟检查一下ipv6有没有变化,有变化就修改域名解析。
这个程序为我们提供的服务就是DDNS
飞牛自己就提供这样的服务,你只需要把你域名注册商的操作权限提供给飞牛,飞牛就能有权限来修改域名解析
你需要有阿里云已经备案域名

可以把AccessKey ID和AccessKey Secret 理解为账号和密码
接下来打开阿里云的网站,登陆自己的阿里云账号,鼠标滑到头像

点击AccessKey

创建用户

划重点创建完用户记得把AccessKey ID和AccessKey Secret 复制到安全的地方,因为Accesskey secret只显示这一次,后面不能找回,只能重置

创建用户组


创建成功后 把用户添加到用户组


选重要添加的用户 点击确定


到这里基本就完成了
回到飞牛的设置/远程连接/ddns
填入自己的域名,可以是随便的二级域名比如abc.youdomain.com
其他选项依次填写
