0%

the Asynchronous Server Gateway Interface.

conda相当于虚拟机,在里面安装python和依赖

  • 查看环境

    1
    conda env list
  • 新建环境

    1
    conda create --name your_env_name

    指定python版本

    1
    conda create --name xxx python=3.10
  • 激活环境

    1
    conda activate xxx
  • 删除环境

    1
    conda remove --name xxx --all

SSO (single sign-on)

https://ninjaauth.com/sso-single-sign-on

keycloak

前提

  • 需要jdk9以上环境

config server

  • 编辑 /conf/keycloak.conf ,配置mysql连接信息 (mysql创建keycloak库)

  • 配置 admin cli 环境变量 (方便直接命令操作,等同于界面操作)

    1
    2
    3
    # keycloak
    export KCADM="/Users/dongwei/Applications/keycloak-23.0.3/bin/kcadm.sh"
    export HOST_FOR_KCADM=localhost

bootstrap

  • 首次启动

    KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=xxxxxx ./bin/kc.sh start-dev

  • 后续启动

    ./bin/kc.sh start-dev

  • 生效 KCADM

    $KCADM config credentials --server http://localhost:8080 --realm master --user admin

    提示输入密码即可 (1sou2sou)

​ 验证 $KCADM get serverinfo

config realm

  • 创建新的realm

    $KCADM create realms -s realm="jarvex" -s enabled=true

config clients

1
$KCADM create clients -r jarvex -s clientId="jarvex-client-test-1" -s enabled=true -s name="test Client 1" -s protocol=openid-connect -s publicClient=true -s standardFlowEnabled=true -s 'redirectUris=["http://127.0.0.1:8001/app/*"]' -s baseUrl="http://127.0.0.1:8001/app/" -s 'webOrigins=["*"]'

在 FastAPI JWT Auth 中,Refresh Token(刷新令牌)和 Access Token(访问令牌)是两种不同的令牌,用于实现认证和授权机制。

  1. Access Token(访问令牌):Access Token 是一个短期的令牌,用于验证用户的身份并授权用户访问受保护的资源。Access Token 是通过用户提供的凭证(如用户名和密码)进行身份验证后生成的,通常具有较短的有效期(例如几分钟或几小时)。客户端在每次请求受保护的资源时,需要在请求的头部或请求参数中携带 Access Token,以证明其有权访问该资源。
  2. Refresh Token(刷新令牌):Refresh Token 是一个长期有效的令牌,用于在 Access Token 过期后重新获取新的 Access Token。当 Access Token 过期时,客户端可以使用 Refresh Token 向服务器发送请求来获取新的 Access Token,而无需重新提供用户名和密码等凭证。通常情况下,Refresh Token 的有效期要比 Access Token 更长。

使用 Refresh Token 的主要目的是增强安全性和减少频繁的身份验证操作。通过将 Access Token 的有效期设置较短,可以降低令牌泄露的风险。当 Access Token 过期时,使用 Refresh Token 获取新的 Access Token,这样可以减少频繁地要求用户重新提供凭证的情况。

一般的流程是,客户端在进行身份验证后会收到一个 Access Token 和一个 Refresh Token。客户端使用 Access Token 来访问受保护的资源,当 Access Token 过期时,客户端使用 Refresh Token 向服务器请求新的 Access Token。

FastAPI JWT Auth 提供了相应的功能和装饰器来处理 Access Token 和 Refresh Token 的生成、验证和刷新等操作,以方便实现 JWT 认证和授权。

refresh tokens cannot access an endpoint that is protected with jwt_required(), jwt_optional(), and fresh_jwt_required()

access tokens cannot access an endpoint that is protected with jwt_refresh_token_required().

Refresh Tokens

These are long-lived tokens which can be used to create a new access tokens once an old access token has expired.

vimdiff

进入冲突解决窗口

1
git mergetool

窗口显示四部分内容

  • LOCAL – this is file from the current branch

  • BASE – common ancestor, how file looked before both changes

  • REMOTE – file you are merging into your branch

  • MERGED – merge result, this is what gets saved in the repo

移动窗口方法

1
2
3
4
Ctrl w + h   # move to the split on the left 
Ctrl w + j # move to the split below
Ctrl w + k # move to the split on top
Ctrl w + l # move to the split on the right

处理冲突

  • 可移动到merge窗口去手动改

  • 使用命令

    1
    2
    3
    :diffg RE  # get from REMOTE
    :diffg BA # get from BASE
    :diffg LO # get from LOCAL

保存退出

1
:wqa

Meld

todo

机器学习术语表

机器学习类型

什么是机器学习?

根据机器学习系统学习进行预测或生成内容的方式,机器学习系统可分为以下一个或多个类别:

  • 监督式学习
  • 非监督式学习
  • 强化学习
  • 生成式 AI
  • 实现机器学习的一般步骤:
  1. 数据收集
  2. 数据准备
  3. 数据分析
  4. 训练算法
  5. 测试算法
  6. 应用算法

数据

训练集、验证集、测试集

虚拟环境

在 Linux 中配置 Python 项目的运行虚拟环境通常使用 venv(虚拟环境)模块。以下是一般的步骤:

  1. 安装 venv 模块(如果尚未安装):

    检查你的 Python 版本并确保安装了 venv 模块。

  2. 创建虚拟环境:

    在项目目录中,运行以下命令创建一个名为 myenv 的虚拟环境:

    1
    python3 -m venv myenv

    这将在当前目录创建一个名为 myenv 的虚拟环境文件夹。

  3. 激活虚拟环境:

    激活虚拟环境可通过以下命令:

    1
    source myenv/bin/activate

    这将激活名为 myenv 的虚拟环境。激活后,你的终端提示符可能会显示虚拟环境的名称。

  4. 安装项目依赖:

    在激活的虚拟环境中,使用 pip 安装项目所需的依赖:

    1
    pip install -r requirements.txt

    其中 requirements.txt 是包含项目依赖项的文件。

  5. 退出虚拟环境:

    当你完成项目工作后,可以通过以下方式退出虚拟环境:

    1
    deactivate

    这将使虚拟环境退出,并恢复到系统默认环境。

使用虚拟环境有助于隔离项目的依赖,避免与系统其他项目的依赖冲突,并提供更干净的开发环境。

uvicorn

正常情况下虚拟环境 /path/to/venv/bin/ 下面是有 uvicorn 的启动命令的,即 /xxx/venv/bin/uvicorn

如果当前虚拟环境不识别uvicorn,可通过

  • 方式一
1
python -m uvicorn xxx:app --reload
  • 方式二
1
pip install --force-reinstall uvicorn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看当前版本
pyenv version

# 查看所有版本
pyenv versions

# 查看所有可安装的版本
pyenv install --list

# 安装指定版本
pyenv install 3.6.5
# 安装新版本后rehash一下
pyenv rehash

# 删除指定版本
pyenv uninstall 3.5.2

# 指定版本
pyenv shell <version> -- select just for current shell session
pyenv local <version> -- automatically select whenever you are in the current directory (or its subdirectories)
pyenv global <version> -- select globally for your user account

# 指定多个全局版本, 3版本优先
pyenv global 3.6.5 2.7.14

# 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的
  • 当前项目使用的pyenv版本会在 .python-version文件中体现

reference