Avatar

Organizations

  • 在 Docker 的容器内开发,相当于使用VSCode的远程开发能力,好处非常多。

    • 开发环境统一、可维护性强
    • 后期部署简单

    1. 安装 Docker

    Docker 安装

    2. 安装 Visual Stuido Code

    这不废话嘛,同上。

    3. 安装 Remote Development 扩展包

    官方推荐安装 Remote Development 这个扩展包,它包括三个扩展功能:

    • Remote - SSH
    • Remote - Containers
    • Remote - WSL

    如果你只使用 Docker ,可以只安装 Remote - Containers 这个扩展。

    安装成功后,你可以在 VSCode 的左下角,看到一个“蓝底色+两个相对白箭头”的图标。

    点击图标,可以看到 Remote - Containers 提供了许多方法进行配置。

    4. 配置 Remote - Containers

    4.1. 使用现成的 docker-compose.yml 配置

    1. 点击左下角的蓝色图标
    2. 选择 Add Development Container Configuration Files…
    3. 选择 Existing Docker Compose (Extend)
      1. VSCode 会自动在项目的根目录下,生成 .devcontainer 文件夹
      2. 在 .devcontainer 目录内,包括两个文件:
        1. devcontainer.json:VSCode 使用它连接开发容器
        2. docker-compose.yml:示例文件,可以不用管它
    4. 打开 devcontainer.json 文件

    照着 docker-compose.yml 进行修改,见下面示例

    python venv docker vscode Created Sat, 25 Nov 2023 00:24:10 +0800
  • 使用 VSCode 开发 Python 是替代 PyCharm 的一个很好选择,有丰富的扩展和第三方工具可以使用,安装配置好它们,会让开发工作事半功倍。下面列举推荐安装的扩展和工具:

    扩展

    • Material Icon There
      • VSCode图标,很好看
    • Python
      • 微软官方扩展,一定要装
    • Pylance
      • 微软官方扩展,一定要装
    • autoDocstring
    • Python Environment Manager
    • Ruff
    • Code Runner
    • Qt for Python

    工具

    • Micromamba
      • 使用 Micromamba 来配置 Python 开发环境有几个好处:
        • micromamba 是一个包管理器,可方便的同时安装几个软件,形成一个独立的开发环境,与其它项目的开发环境完全隔离。
        • micromamba 安装的软件,不会在系统留下痕迹,不会污染本地系统。
        • micromamba 只配置 python 基础环境,不影响 python 虚拟环境,同一个基础环境可提供给多个虚拟环境使用。

    配置 Micromamba

    Micromamba的安装与使用

    配置 VSCode1

    配置 Venv 路径

    1. 使用 “ctrl+,” 打开设置界面,搜索 venv ,出现两个结果:
    选项
    Python: Venv Folders如果安装时使用默认位置,就填写 micromamba,下面的不用设置
    Python: Venv Path如果安装时没有使用默认位置,就填写安装位置,上面的不用设置
    Python: Conda Path直接输入conda 即可
    1. 重启VSCode,进入 Python 项目,就可以看到右下角的 Python 环境了,如果创建了多个环境,可以通过这里切换。这里需要注意 vscode 可以识别多个 Python 版本,但无法正确配置它们。所以创建不同的 Python 版本后,还要为项目选择解释器。

    使用 Python 虚拟环境

    1. 使用项目终端界面,创建虚拟环境。
    # 先激活 micromamba 环境
    PS "Your Project Path"> conda activate PyQt
    
    # 创建Python虚拟环境
    # --upgrade 参数是升级虚拟环境用的,新建虚拟环境时要去掉。
    # --system-site-packages 会降低环境隔离性,生产环境慎用。
    (PyQt) PS "Your Project Path"> python -m venv --prompt "<myproject>" --upgrade-deps .venv --symlinks --upgrade --system-site-packages
    # 查看项目资源管理器,看到 .venv 文件夹就成功了。
    
    # 激活Python虚拟环境
    (PyQt) PS "Your Project Path"> Activate.ps1
    
    # 成功进入虚拟环境
    (myproject) (PyQt) PS "Your Project Path">
    

    重启 vscode 再次进入项目终端,不一定会看到项目前缀2。VsCode已经自动修你激活了Python虚拟环境,不需要再操作。 安装包里不需要激活 micromamba 环境,否则包将被安装到 micromamba 环境中。

    micromamba python venv vscode Created Sat, 25 Nov 2023 00:24:10 +0800
  • OpenWRT 配置 IPv6,在网上有许多教程,但大部分都说的不清不楚。 所以我从 OpenWRT 配置文件的角度,给出一个肯定能用的配置。 相关配置原理不详述,可自行上网查找。

    系统环境

    • 北京联通 300M 家宽 (客服说100元/月,可提供公网IPv4/IPv6地址,其实IPv6是免费给的)
    • OpenWRT(PVE虚机,非直通网卡)
      • 目标平台:x86/64
      • 固件版本:OpenWrt 21.02.0 r16279-5cc0535800 / LuCI openwrt-21.02 branch git-23.093.57360-e98243e
      • 内核版本:5.4.143
      • DHCPv6 客户端 (odhcp6c)
      • RA & DHCPv6 服务器 (odhcpd)
      • IPv6 防火墙 (ip6tables)
      • Luci网页配置 (luci-proto-ipv6)

    配置流程

    1. 光猫桥接(电话联通,远程搞定)
    2. OpenWRT WAN IPv6 配置
    # /etc/config/network
    ...
    config interface 'lan'
            option proto 'static'
            option ipaddr '192.168.10.10'
            option netmask '255.255.255.0'
            option device 'eth0'
            option ip6assign '64' # IPv6分配长度。要与 wan 口一致。
    
    config interface 'wan'
            option proto 'pppoe'
            option username '***********'
            option password '***********'
            option device 'eth1'
            option ipv6 'auto' # 自动获取IPv6地址,使用这个选项后,会自动创建一个虚拟动态接口(WAN_6),不用配置。
            option ip6assign '64' # IPv6分配长度。参考 WAN_6 接口 IPv6-PD 的掩码长度,一般为“60”,比它大即可,系统默认为64。
    ...
    
    1. OpenWRT 防火墙配置
    # /etc/config/firewall
    ...
    config zone
            option name 'lan'
            list network 'lan'
            option input 'ACCEPT'
            option output 'ACCEPT'
            option forward 'ACCEPT'
    
    config zone
            option name 'wan'
            list network 'wan'
            option input 'DROP' # 关闭 wan 口输入流量
            option output 'ACCEPT' # 只出不进
            option forward 'REJECT'
            option masq '1' # 打开 NAT 功能
            option mtu_fix '1' # 路由器直接拨号时使用
    ...
    # 转发规划很重要
    config forwarding
            option src 'lan'
            option dest 'wan'
    ...
    # 允许外网IPv6协议下,任意地址的547端口的UDP包通过wan口,访问本机546端口
    config rule
            option name 'Allow-DHCPv6'
            option proto 'udp'
            option src 'wan'
            option src_port '547'
            option dest_port '546'
            option target 'ACCEPT'
            option family 'ipv6'
    
    1. OpenWRT DHCP 配置
    # /etc/config/dhcp
    ...
    config dhcp 'lan'
            option interface 'lan'
            option start '100'
            option dhcpv4 'server'
            option limit '200'
            option force '1'
            option leasetime '2h'
            option ra 'server' # RA服务 服务器模式
            option dhcpv6 'server' # DHCPv6服务 服务器模式
            list ra_flags 'none' # RA标记 无
    
    config dhcp 'wan'
            option interface 'wan'
            option ignore '1'
            list ra_flags 'none'
    
    config odhcpd 'odhcpd'
            option maindhcp '0'
            option leasefile '/tmp/hosts/odhcpd'
            option leasetrigger '/usr/sbin/odhcpd-update'
            option loglevel '4'
    
    1. 重启OpenWRT
    2. 查看 Luci -> 网络 -> 接口 -> LAN,已拿到的IPv6地址
    3. 测试本机外网IPv6地址,与 LAN 的 IPv6地址一致即可
    $ curl 6.ipw.cn
    

    参考文档

    firewall network ipv6 openwrt Created Wed, 04 Oct 2023 19:48:18 +0800
  • x86

    版本说明
    64用于现代PC硬件(大约在2007年以后的产品),它是为具有64位功能的计算机而构建的,并支持现代CPU功能。除非有充分的理由,否则请选择此选项。
    Generic仅适用于32位硬件(旧硬件或某些Atom处理器),应为i586 Linux体系结构,将在Pentium 4及更高版本上运行。仅当您的硬件无法运行64位版本时才使用此功能。
    Legacy用于奔腾4之前的非常旧的PC硬件,在Linux体系结构支持中称为i386。它会错过许多现代硬件上想要/需要的功能,例如多核支持以及对超过1GB RAM的支持,但实际上会在较旧的硬件上运行,而其他版本则不会。
    Geode是为Geode SoC定制的自定义旧版目标,Geode SoC仍在许多(老化的)网络设备中使用,例如PCEngines的较旧Alix板。
    文件名说明
    Combined组合的,包括bootloader、kernel、rootfs
    squashfs该磁盘映像使用传统的OpenWrt布局,一个squashfs只读根文件系统和一个读写分区,在其中存储您安装的设置和软件包。由于此映像的组装方式,您只有230 兆MB的空间来存储其他程序包和配置,而Extroot不起作用。squashfs适用于直接编译带有软件包的openwrt系统,方便重置路由器,不必从安装包重新刷机。
    ext4此磁盘映像使用单个读写ext4分区,没有只读squashfs根文件系统,因此可以扩大分区。故障安全模式或出厂重置等功能将不可用,因为它们需要只读的squashfs分区才能起作用。选择64的情况下,ext4适合我们扩容,并安装软件包。
    efi指的是UEFI,可以使用GPT分区列表,是较新的技术,性能和可扩展性上更好,不带efi的则是使用Legacy。
    bootloader引导程序
    kernelLinux内核
    rootfsopenwrt根系统

    参考文档

    version OpenWRT Created Wed, 04 Oct 2023 14:10:17 +0800
  • 查看系统内核

    $ uname -r
    

    kernel 4.9 及以上已支持 tcp_bbr,看内核版本是否大于等于4.9,否则要升级内核,或者安装bbr。

    bbr2 效果要好于 bbr,相当原理可查看参考文档

    配置拥塞算法

    # 查看可用的拥塞算法
    $ sysctl net.ipv4.tcp_available_congestion_control
    
    # 查看使用的拥塞算法
    $ sysctl net.ipv4.tcp_congestion_control
    
    # 设置拥塞算法
    $ sysctl -w net.core.default_qdisc=fq
    $ sysctl -w net.ipv4.tcp_congestion_control=bbr
    
    # 查看设置结果
    $ lsmod | grep bbr
    

    配置持久化

    $ echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    $ echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    $ sysctl -p
    

    参考文档

    tcp bbr proxmoxve Created Tue, 03 Oct 2023 13:04:09 +0800
  • 修改JS文件

    $ nano /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
    

    6.0+ (380行)

    if (data.status !== 'Active') {
    

    替换为

    if (false) {
    

    重启服务

    $ systemctl restart pveproxy.service
    

    参考文档

    subscription proxmoxve Created Tue, 06 Jun 2023 20:20:04 +0800
  • 文件合并

    cat info.log error.log > merge.log.bak
    cp merge.log.bak merge.log
    

    文件拆分

    cli txt linux Created Wed, 31 May 2023 11:18:52 +0800
  • 安装 xrdp

    $ sudo apt install xrdp
    

    启动xrdp服务,并设置为开机启动

    $ sudo systemctl start xrdp
    $ sudo systemctl enable xrdp
    

    解决黑屏/空屏/无画面

    $ nano /etc/xrdp/startwm.sh
    
    unset DBUS_SESSION_BUS_ADDRESS
    unset XDG_RUNTIME_DIR
    . $HOME/.profile
    

    重启deepin,使用Xorg模式登录

    参考文档

    deepin rdp linux Created Sat, 06 May 2023 21:04:06 +0800
  • 在hyper-v虚拟机下调节分辨率

    $ sudo nano /etc/default/grub
    

    修改配置项

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1366x768"
    

    更新 grub

    $ sudo /usr/lib/deepin-api/adjust-grub-theme
    $ sudo update-grub
    

    注意:这种方法最高只能支持 1920×1080 的分辨率,对于大显示器,高 DPI 的童鞋,可以考虑用 RDP,VNC 等方式来用上更高的分辨率。

    参考文档

    deepin Hyper-V windows Created Sat, 06 May 2023 20:20:12 +0800