作者: 启鑫

  • WOL 主机唤醒工具

    1. 我为什么要写WOL 唤醒工具

    答案:是为了省电(是为了环保)

    2. MarsCode是什么?

    MarsCode对话框官方回答:MarsCode是一个在线的集成开发环境(IDE),它专注于提供一个高效、便捷的编程环境,特别是在教育领域。MarsCode支持多种编程语言,包括Python、Java、C++等,并且提供了实时的代码编辑、调试和运行功能。

    MarsCode的特点包括:

    1. 实时协作:支持多人实时协作编程,适用于团队项目或教学场景。
    2. 代码自动补全:提供智能的代码自动补全功能,帮助开发者提高编码效率。
    3. 语法高亮:支持多种编程语言的语法高亮,使代码更加易读。
    4. 调试工具:内置调试工具,方便开发者进行代码调试。
    5. 版本控制:集成了Git版本控制系统,方便管理代码版本。
    6. 云端存储:所有代码和项目都存储在云端,用户可以随时随地访问和编辑。

    MarsCode的目标是为开发者和学习者提供一个简单、易用且功能强大的编程环境,帮助他们更高效地编写代码。

    3. 为什么要使用这个工具

    写这个代码的起因是前段时间参加字节跳动豆包MarsCode活动
    既然参加了活动,我觉得我还是要体验一下产品,使用产品要做点什么的

    4. 项目需求

    对于使用远程桌面工具经常连接回家的我来说,日常电脑正常开机跑编译或是本地跑AI等情景挺多的,但也有很多闲置的时候

    因此做了一个主机唤醒工具方便在不使用电脑的时候关闭电脑,在需要的时候通过远程唤醒的方式打开电脑让电脑起飞

    在豆包MarsCode的帮助下,提供需求和多次改进终于把代码写好啦

    多了一次使用AI编程的实战

    5. 实现方法

    1. 注册一个MarsCode账号
    2. 进入工作台
    3. 可以在本地IDE中集成,或者直接使用云端网页版
    4. 创建一个项目
    5. 把你的想法告诉MarsCode,开启代码创作之旅
    6. 不停的更改你的需求,让MarsCode输出代码
    7. 在本地搭建好环境运行就好啦
    8. 在多次代码的输出下这事儿成啦,可以啦

    6. 总结

    在使用MarsCode时候,在提需求的时候AI会输出代码(你说啥我输出啥只要快就好)
    不停的进行改改改,对于新手小白来说充满了新奇和在不会编程的同时更容易去实现写代码的功能
    刚开始输出的时候的确给了可以用的功能,但不太满意,需要继续提需求达到满意(再一次想起了我的甲方爸爸),我会在提供可用功能的同时继续提供给MarsCode代码让他继续优化,这样的结果会更完美,功夫不负有心人,终于搞定了

    7. 项目地址

    以下是完成的Python代码

    # Author: liqixin
    # Mail: [email protected]
    # Web: https://www.qixinlee.com
    
    import streamlit as st
    import wakeonlan
    
    # 设置页面标题
    st.title("WOL 唤醒工具")
    
    # 预设的常用主机MAC地址列表
    common_mac_addresses = {
        "Host 1": "00:11:22:33:44:55",
        "Host 2": "AA:BB:CC:DD:EE:FF",
        "Host 3": "11:22:33:44:55:66"
    }
    
    # 在页面上添加下拉框,用于选择目标主机
    selected_host = st.selectbox("请选择要唤醒的主机:", list(common_mac_addresses.keys()))
    
    # 在页面上添加文本输入框,用于输入自定义主机MAC地址
    custom_mac_address = st.text_input("或者输入自定义主机MAC地址:")
    
    # 使用st.empty()创建一个占位符,用于在条件满足时显示警告信息
    warning_placeholder = st.empty()
    
    # 在页面上添加一个按钮,用于发送魔法包
    if st.button("唤醒主机"):
        # 检查 MAC 地址是否为空
        if not custom_mac_address and not selected_host:
            # 在占位符中显示警告信息
            warning_placeholder.warning("请选择要唤醒的主机或输入自定义主机MAC地址。")
        else:
            # 发送魔法包
            if custom_mac_address:
                wakeonlan.send_magic_packet(custom_mac_address)
                st.success(f"已发送魔法包到 {custom_mac_address},尝试唤醒主机。")
            else:
                mac_address = common_mac_addresses[selected_host]
                wakeonlan.send_magic_packet(mac_address)
                st.success(f"已发送魔法包到 {mac_address},尝试唤醒主机。")
  • macOS启动Wireshark遇到权限错误解决

    macOS安装后启动Wireshark遇到.config permission denied

    1. 更新Wireshark

    首先,确保你的Wireshark版本是最新的。可以访问Wireshark的官网进行下载并安装最新版本:

    2. 检查当前登录用户

    打开终端并使用 whoami 命令查看当前登录的用户名:

    whoami
    

    记录下你当前登录的用户名,通常是你在 macOS 上的用户名。

    3. 修改文件夹权限

    permission denied 错误通常是由于用户没有对某些配置文件或文件夹的写权限导致的。针对 .config 文件夹,可以执行以下步骤:

    1. 找到 ~/.config 目录(即用户主目录下的 .config 文件夹)。
    2. 使用 chown 命令修改该文件夹的所有权为当前登录用户,命令格式如下:
    sudo chown -R <username> ~/.config
    

    将 <username> 替换为你在第2步中获取到的用户名。

    4. 检查权限

    修改权限后,可以通过以下命令检查文件夹权限是否正确:

    ls -ld ~/.config
    

    确保当前用户拥有该文件夹的写权限。

    5. 重启Wireshark

    修改权限后,重新启动Wireshark,看看问题是否解决。如果仍然遇到权限问题,可以尝试退出并重新登录,或者重启计算机再试。

  • 使用FFMPEG将TS格式无损转码为MP4格式

    CPU

    H.264 (无损)

    ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4
    • -i input.ts 指定输入文件
    • -c:v libx264 指定视频编码器为 H.264 (无损)
    • -crf 0 设置质量为无损 (0 是最高质量,但文件大小会增加)
    • -c:a copy 复制音频流而不重新编码
    • output.mp4 指定输出文件名

    H.265 (无损)

    使用 H.265 (HEVC) 编码器

    ffmpeg -i input.ts -c:v libx265 -crf 0 -c:a copy output.mp4

    NVIDIA GPU

    H.264 (无损)

    ffmpeg -i input.ts -c:v h264_nvenc -crf 0 -c:a copy output.mp4
    • -i input.ts 指定输入文件
    • -c:v h264_nvenc 指定视频编码器为 H.264 (无损) 使用 NVIDIA NVENC 硬件加速
    • -crf 0 设置质量为无损 (0 是最高质量,但文件大小会增加)
    • -c:a copy 复制音频流而不重新编码
    • output.mp4 指定输出文件名

    H.265 (无损)

    使用 H.265 (HEVC) 编码器使用 NVIDIA NVENC 硬件加速

    ffmpeg -i input.ts -c:v hevc_nvenc -crf 0 -c:a copy output.mp4
  • Debian11升级到Debian12

    1. 更新软件包列表

    我们需要更新软件包列表获取最新的软件包信息。

    apt update

    2. 升级软件包

    我们需要升级软件包应用最新的安全补丁和功能更新。

    apt upgrade

    3. 编辑 sources.list 文件

    在升级系统之前,我们需要编辑 sources.list 文件,使用Debian12的sources.list

    nano /etc/apt/sources.list

    使用以下内容:

    deb http://deb.debian.org/debian bookworm main non-free-firmware
    deb-src http://deb.debian.org/debian bookworm main non-free-firmware
    
    deb http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware
    deb-src http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware
    
    deb http://deb.debian.org/debian bookworm-updates main non-free-firmware
    deb-src http://deb.debian.org/debian bookworm-updates main non-free-firmware

    4. 更新软件包列表

    再次更新软件包列表更新 sources.list 文件的变化。

    apt update

    5. 完整升级软件包

    使用以下命令进行完整升级,这将升级系统到最新版本,包括所有已安装的软件包。

    apt full-upgrade

    6. 在升级过程中,系统有交互操作

    apt-listchanges:News
    升级过程中会阅读系统的新变化
    输入 q 退出
    
    Restart services during package upgrades without asking?
    服务可能需要重新启动。我们可以选择是否重新启动服务
    选择 Yes 以重新启动服务。
    
    keep the local version currently installed
    保持以前的ssh配置设置
    选择 Ok

    7. 重启系统

    最后我们需要重启系统,应用所有的更改

    systemctl reboot

    8. 清理无用的软件包

    在升级完成后,清理无用的软件包来释放磁盘空间

    apt --purge autoremove

    9. 查看系统版本信息

    查看系统版本信息确保系统已经升级到最新版本。

    lsb_release -a
  • Docker in use dangling 镜像删除

    首先需要找出正在使用 dangling 镜像的容器。停止并删除这些容器,最后再删除 dangling 镜像

    1. 查找正在使用 dangling 镜像的容器: 运行以下命令可以列出当前正在运行的容器列表,包括它们的容器 ID、镜像名称等信息
       docker ps
    1. 停止使用 dangling 镜像的容器: 对于正在使用 dangling 镜像的容器,使用以下命令停止它们:
       docker stop <容器ID>
    1. 删除停止的容器: 使用以下命令删除所有停止的容器:
       docker rm $(docker ps -aq)
    1. 删除 dangling 镜像: 最后,使用以下命令删除 dangling 镜像:
       docker rmi $(docker images -f dangling=true -q)