2025年Steam促销活动

2025年上半年促销活动:

  • 即时战略游戏节:1 月 20 日 - 27 日(PT)
  • 挂机游戏节:2 月 3 日 - 10 日(PT)
  • 沙发合作游戏节:2 月 10 日 - 17 日(PT)
  • Steam 新品节 - 2025 年 2 月版:2 月 24 日 - 3 月 3 日(PT)
  • 视觉小说游戏节:3 月 3 日 - 10 日(PT)
  • 2025 年 Steam 春季特卖:3 月 13 日 - 20 日(PT)
  • 城市营造及殖民模拟游戏节:3 月 24 日 - 31 日(PT)
  • 推箱子游戏节:4 月 21 日 - 28 日(PT)
  • 战争游戏节:4 月 28 日 - 5 月 5 日(PT)
  • 生物收集游戏节:5 月 12 日 - 5 月 19 日(PT)
  • 僵尸大战吸血鬼游戏节:5 月 26 日 - 6 月 2 日(PT)
  • Steam 新品节 - 2025 年 6 月版:6 月 9 日 - 16 日(PT)
  • 钓鱼游戏节:6 月 16 日 - 23 日(PT)
  • 2025 年 Steam 夏日特卖:6 月 26 日 - 7 月 10 日(PT)

2025年下半年促销活动:

  • 自动化游戏节:7 月 14 日 – 7 月 21 日(PT)
  • 竞速游戏节:7 月 28 日 – 8 月 4 日(PT)
  • 4X 游戏节:8 月 11 日 – 8 月 18 日(PT)
  • 第三人称射击游戏节:8 月 25 日 – 9 月 1 日(PT)
  • 政治模拟游戏节:9 月 8 日 – 9 月 15 日(PT)
  • 2025 年 Steam 秋季特卖:9 月 29 日 - 10 月 6 日(PT)(注意:本次秋季特卖与往届时间点不同,注意时间)
  • Steam 新品节 - 2025 年 10 月:10 月 13 日 – 10 月 20 日(PT)
  • Steam 尖叫游戏节 :10 月 27 日 – 11 月 3 日(PT)
  • 动物游戏节:11 月 10 日 – 11 月 17 日(PT)
  • 体育游戏节:12 月 8 日 – 12 月 15 日(PT)
  • 2025 年 Steam 冬季特卖:12 月 18 日 - 1 月 5 日(PT)

screen让任务在后台运行

screen 是一个强大的终端复用器,允许你创建多个虚拟终端会话,并在这些会话之间切换。 它非常适合在远程服务器上运行长时间的任务,因为即使你断开连接,会话也会继续运行。 以下是 screen 的基本用法:

1. 安装 screen

如果你的系统上没有安装 screen,可以使用以下命令安装:

  • Debian/Ubuntu: sudo apt update && sudo apt install screen
  • CentOS/RHEL: sudo yum install screen
  • Fedora: sudo dnf install screen
  • macOS (使用 Homebrew): brew install screen

2. 启动 screen

  • screen: 启动一个新的 screen 会话。 如果这是你第一次启动 screen,你可能会看到一个介绍页面,按空格键继续。
  • screen -S <session_name>: 启动一个名为 <session_name> 的新 screen 会话。 这可以让你更容易地识别和重新连接到特定的会话。 例如:screen -S my_long_task

3. 基本操作:

screen 的所有命令都以 Ctrl+a 开头。 这意味着你先按下 Ctrl 键和 a 键,然后释放这两个键,再按下另一个键来执行命令。

  • Ctrl+a c: 创建一个新的窗口 (虚拟终端)。
  • Ctrl+a n: 切换到下一个窗口。
  • Ctrl+a p: 切换到上一个窗口。
  • Ctrl+a <number>: 切换到编号为 <number> 的窗口 (窗口编号从 0 开始)。 例如,Ctrl+a 0 切换到第一个窗口。
  • Ctrl+a " (双引号): 列出所有窗口,并允许你选择要切换到的窗口。
  • Ctrl+a d: 分离 (detach) 当前会话。 这会将你从 screen 会话中分离出来,但会话仍然在后台运行。 你会回到原始终端。
  • Ctrl+a k: 杀死 (kill) 当前窗口。 screen 会提示你确认是否要杀死窗口。
  • Ctrl+a ?: 显示帮助信息,列出所有可用的命令。

4. 重新连接到 screen 会话:

  • screen -r: 如果只有一个分离的会话,这将直接连接到它。
  • screen -r <session_name>screen -r <PID>: 如果有多个分离的会话,你需要指定会话的名称或 PID。 使用 screen -ls 命令查看所有可用的会话及其名称/PID。

5. 列出 screen 会话:

  • screen -ls: 列出所有正在运行的 screen 会话。 输出会显示会话的 PID 和状态(例如,Detached 或 Attached)。

6. 示例:

  1. 启动一个新的 screen 会话:

    screen -S my_session
  2. 在第一个窗口中,启动一个长时间运行的任务,例如:

    ping google.com
  3. 创建一个新的窗口:

    Ctrl+a c
  4. 在第二个窗口中,运行另一个命令:

    top
  5. 切换回第一个窗口:

    Ctrl+a 0
  6. 分离会话:

    Ctrl+a d
  7. 稍后,重新连接到会话:

    screen -r my_session

7. 高级用法:

  • screen 配置文件: 你可以通过编辑 ~/.screenrc 文件来配置 screen 的行为,例如设置默认窗口数量、自定义快捷键等。
  • 窗口命名: 使用 Ctrl+a A (大写 A) 可以为当前窗口设置一个更有意义的名称。 这可以使 screen -ls 的输出更易于理解。
  • 滚动:screen 会话中,按下 Ctrl+a [ 进入复制模式,然后可以使用方向键或 vi 风格的键 (h, j, k, l) 来滚动查看历史输出。 按下 Esc 退出复制模式。

总结:

screen 是一个非常有用的工具,可以提高你在终端中的工作效率,尤其是在远程服务器上。 掌握基本命令(创建窗口、切换窗口、分离和重新连接会话)可以让你轻松地管理多个任务。 记住,所有命令都以 Ctrl+a 开头。 探索 screen 的更多高级功能,例如窗口命名和配置文件,可以进一步定制你的使用体验。

Miniconda 安装及使用

以下是针对 Miniconda 版本选择、安装包命名规则及使用方法的详细说明:


一、Miniconda 版本选择建议

1. Python 版本选择(安装包名称中的 pyXX 含义)

  • 安装包名称示例
    Miniconda3-py311_23.10.0-1-Windows-x86_64.exe
    其中 py311 表示该安装包默认创建的 base 环境中 Python 版本为 3.11
  • 如何选择

    • 推荐选择最新稳定版(如 py313):兼容主流第三方库(如 PyTorch、TensorFlow)。
    • 项目需求优先:若已有项目指定 Python 版本(如 3.8),可后续通过 conda create 新建对应环境。
    • 无需纠结:即使安装包默认 Python 版本与需求不符,仍可自由创建其他 Python 版本的环境。

2. 操作系统与架构

  • Windows 用户:选择 Windows-x86_64(64 位系统)或 Windows-x86(32 位系统,极少见)。
  • Linux/macOS:根据系统类型选择对应版本。

二、安装包命名规则解析

以下是一个典型安装包名称的拆解:
Miniconda3-py311_23.10.0-1-Windows-x86_64.exe

  • Miniconda3:表示包含 Python3 的 Miniconda。
  • py311:默认 base 环境中的 Python 版本为 3.11。
  • 23.10.0-1:Conda 的版本号。
  • Windows-x86_64:适用操作系统和架构。

三、安装步骤(以 Windows 为例)

  1. 下载地址
    Miniconda 官网
  2. 安装选项关键配置

    • 安装路径:建议默认(如 C:\Users\<用户名>\Miniconda3),避免空格或中文路径。
    • 高级选项
      Add Miniconda3 to my PATH environment variable不勾选(防止与系统 Python 冲突)。
      Register Miniconda3 as my default Python不勾选(同样避免冲突)。
  3. 完成安装
    安装后,通过 Anaconda Prompt(专门配置了 Conda 环境的命令行工具)操作 Conda。

四、安装后快速使用教程

1. 初始化与验证

# 打开 Anaconda Prompt(开始菜单中搜索)
conda --version           # 验证 Conda 是否安装成功
conda info --envs        # 查看已有环境(默认仅 base 环境)

2. 创建独立环境

# 创建名为 myenv 的环境,并安装 Python 3.9
conda create -n myenv python=3.9
# 激活环境
conda activate myenv

3. 管理包

# 安装包(如 numpy)
conda install numpy
# 或使用 pip(建议优先 conda)
pip install requests

4. 切换与退出环境

# 退出当前环境
conda deactivate
# 激活其他环境
conda activate base      # 返回 base 环境

5. 常用命令

conda list               # 查看当前环境已安装的包
conda env list           # 列出所有环境
conda remove -n myenv --all  # 删除环境
conda update conda       # 更新 Conda 自身

五、注意事项

  1. 隔离性原则

    • 避免在 base 环境直接安装包,防止依赖冲突。
    • 每个项目使用独立环境(如 myenv)。
  2. 路径问题

    • 若需在普通命令行(如 CMD、PowerShell)使用 Conda,需手动初始化或直接使用 Anaconda Prompt
  3. 包管理优先级

    • 优先使用 Conda 安装包:Conda 能自动解决依赖冲突。
    • 次选用 pip:在 Conda 环境中使用时,避免与 Conda 安装的包冲突。

六、常见场景示例

场景 1:克隆现有环境

conda create --clone myenv --name myenv_copy

场景 2:导出环境配置

conda env export > environment.yml   # 导出环境
conda env create -f environment.yml   # 从文件创建环境

场景 3:安装特定版本包

conda install numpy=1.23.5

总结

  • 版本选择:无需纠结安装包的默认 Python 版本,可按需创建新环境。
  • 安装要点:不勾选 PATH 和默认 Python 注册,通过 Anaconda Prompt 操作。
  • 核心逻辑:通过环境隔离(conda create + conda activate)管理不同项目的依赖,避免全局混乱。

以下是关于 Conda 环境切换及 Python 程序执行的详细说明:


1. Conda 环境切换的本质

当使用 conda activate <环境名> 时,Conda 会做两件事:

  1. 修改 PATH 环境变量:将当前环境的 python.exe 路径插入到 PATH 最前面。
  2. 激活环境配置:加载环境变量(如特定版本库的路径)。

此时在命令行执行 pythonpip,会优先使用当前激活环境中的解释器和工具。


2. 验证 Python 路径

切换环境后,直接通过以下命令确认当前 Python 路径:

# 查看实际调用的 Python 路径
where python
# 或 Linux/macOS
which python

# 查看 Python 版本
python --version

示例输出

# 激活 myenv 环境前
> where python
C:\Windows\System32\python.exe      # 系统 Python
C:\Users\user\Miniconda3\python.exe  # Conda base 环境

# 激活 myenv 环境后(假设 myenv 安装在 Conda 目录)
> conda activate myenv
(myenv) > where python
C:\Users\user\Miniconda3\envs\myenv\python.exe  # 当前环境 Python
C:\Windows\System32\python.exe

3. 在不同 Conda 环境中执行 Python 程序的两种方式

方式 1:激活环境后执行(推荐)

# 步骤 1:激活目标环境
conda activate myenv

# 步骤 2:执行 Python 程序
python my_script.py

方式 2:直接指定环境中的 Python 解释器(无需激活环境)

# 直接使用目标环境的 Python 解释器绝对路径
C:\Users\user\Miniconda3\envs\myenv\python.exe my_script.py
# 或 Linux/macOS
~/miniconda3/envs/myenv/bin/python my_script.py

4. 跨环境执行的注意事项

  • 包依赖一致性:确保目标环境中已安装程序所需的所有依赖包(可通过 conda list 检查)。
  • 环境隔离性:不同环境的包互不影响,例如:

    • base 环境中安装的 numpy 不会自动出现在 myenv 中。
    • myenv 中升级 pip 不会影响其他环境或系统 Python。

5. 常见问题排查

问题 1:切换环境后,python 命令仍指向系统或其他环境

  • 原因:未正确激活环境,或 PATH 被其他配置覆盖。
  • 解决

    • 确认激活命令是否生效(命令行提示符前应显示 (环境名))。
    • 使用 where python 检查路径优先级。

问题 2:程序在某个环境中运行时报错,其他环境正常

  • 原因:目标环境缺少依赖包或版本不兼容。
  • 解决

    • 在目标环境中重新安装依赖:conda install package=版本号
    • 导出环境配置对比差异:conda env export > environment.yml

6. 自动化脚本示例

若需在脚本中自动切换环境,可编写批处理(Windows)或 Shell 脚本(Linux/macOS):

# Windows 示例(batch 脚本)
@echo off
call conda activate myenv
python my_script.py
#!/bin/bash
# Linux/macOS 示例
source activate myenv
python my_script.py

总结

  • 核心机制:通过 conda activate 修改 PATH,使 python 指向当前环境的解释器。
  • 执行选择:可激活环境后运行程序,或直接使用环境内的 Python 绝对路径。
  • 隔离保障:每个环境的 Python 解释器和依赖包完全独立,无需担心版本冲突。

cmd执行Python同步打印

在Windows的cmd中执行Python脚本时,如果想要同步打印输出,可以使用sys.stdout.flush()方法来强制刷新输出缓冲区。以下是一个简单的Python脚本示例,它会同步打印出一些消息:

import sys
import time
 
# 打印消息函数,加入了刷新输出缓冲区的操作
def print_message(message):
    print(message)
    sys.stdout.flush()
 
# 主程序
if __name__ == "__main__":
    for i in range(5):  # 打印5条消息
        print_message(f"Message {i+1}")
        time.sleep(1)  # 等待1秒,以便观察到同步打印效果

在cmd中执行这个Python脚本时,你会看到消息是同步打印出来的,而不是等到循环结束后一起显示。

Vue动态设置样式

在 Vue.js 中,当使用 v-for 指令遍历一个数组或对象时,你可以根据数组或对象中的值动态地设置样式。这通常通过结合 :style:class 绑定以及计算属性或内联对象/数组语法来实现。

以下是一些示例,展示了如何在 v-for 中根据不同的值设置样式:

使用 :style 绑定内联样式

<template>
  <div v-for="(item, index) in items" :key="index" :style="getItemStyle(item)">
    {{ item.name }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1', isActive: true },
        { name: 'Item 2', isActive: false },
        // ...更多项目
      ]
    };
  },
  methods: {
    getItemStyle(item) {
      return {
        color: item.isActive ? 'green' : 'red',
        fontSize: '20px'
      };
    }
  }
};
</script>

使用 :class 绑定类名

对象语法

<template>
  <div v-for="(item, index) in items" :key="index" :class="getItemClasses(item)">
    {{ item.name }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1', isActive: true, hasError: false },
        { name: 'Item 2', isActive: false, hasError: true },
        // ...更多项目
      ]
    };
  },
  methods: {
    getItemClasses(item) {
      return {
        'active-class': item.isActive,
        'error-class': item.hasError
      };
    }
  }
};
</script>

<style>
.active-class {
  background-color: green;
}

.error-class {
  border: 1px solid red;
}
</style>

数组语法

<template>
  <div v-for="(item, index) in items" :key="index" :class="[item.isActive ? 'active' : '', item.hasError ? 'error' : '']">
    {{ item.name }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1', isActive: true, hasError: false },
        { name: 'Item 2', isActive: false, hasError: true },
        // ...更多项目
      ]
    };
  }
};
</script>

<style>
.active {
  background-color: yellow;
}

.error {
  border: 1px solid red;
}
</style>

使用计算属性

如果样式逻辑比较复杂,你也可以使用计算属性来返回一个对象或数组,该对象或数组包含应该应用的类名或样式。

<template>
  <div v-for="(item, index) in items" :key="index" :class="itemClasses(item)">
    {{ item.name }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        // ...项目数据
      ]
    };
  },
  methods: {
    itemClasses(item) {
      return [
        item.isActive ? 'active' : '',
        item.hasError ? 'error' : ''
      ].filter(cls => cls);
    }
  }
};
</script>