Win10的最新下载

msdn.itell.you已经没有更新最新的windows系统了,但在以下网址却有迅雷下载的种子。
https://bbs.kafan.cn/thread-2220135-1-1.html

文件名:zh-cn_windows_10_consumer_editions_version_22h2_updated_march_2025_x64_dvd_fefab0a7.iso
SHA256:28307d66b6f95d208e152c4856fecbbd02bc518f9c9c2a34c6474978d368bad9
文件大小:6.69GB
发布时间:2025-03-18
ED2K链接:ed2k://|file|zh-cn_windows_10_consumer_editions_version_22h2_updated_march_2025_x64_dvd_fefab0a7.iso|7188094976|87BDAD10931A74E3C2CF7A5EF5E1536D|/
BT链接:magnet:?xt=urn:btih:d3b4a16ae248e2fd87b67bc95f4ba0806a60e6c3&dn=zh-cn_windows_10_consumer_editions_version_22h2_updated_march_2025_x64_dvd_fefab0a7.iso&xl=7188094976

文件名:zh-cn_windows_10_consumer_editions_version_22h2_updated_feb_2025_x64_dvd_16fa7261.iso
SHA256:d9c7d81a88410995d2c0003795d64829e89282cfc6bac665652a9070cf4fa8d9
文件大小:6.69GB
发布时间:2025-02-18
ED2K链接:ed2k://|file|zh-cn_windows_10_consumer_editions_version_22h2_updated_feb_2025_x64_dvd_16fa7261.iso|7182641152|6FF10540756D6C3ABADBC75CE1E1F021|/
BT链接:magnet:?xt=urn:btih:1d28086b6762c70f21b13b103d943595ea99b8c9&dn=zh-cn_windows_10_consumer_editions_version_22h2_updated_feb_2025_x64_dvd_16fa7261.iso&xl=7182641152

文件名:zh-cn_windows_10_consumer_editions_version_22h2_updated_jan_2025_x64_dvd_45152214.iso
SHA256:50491a61015a3243c282a827f3c6cac07f0030526747624cac90e1e70bc86242
文件大小:6.69GB
发布时间:2025-01-21
ED2K链接:ed2k://|file|zh-cn_windows_10_consumer_editions_version_22h2_updated_jan_2025_x64_dvd_45152214.iso|7180709888|622AFCFA2EC88C5460A17BD1353348EA|/
BT链接:magnet:?xt=urn:btih:ce522a8b61a4092071b34cabe36d02486c621411&dn=zh-cn_windows_10_consumer_editions_version_22h2_updated_jan_2025_x64_dvd_45152214.iso&xl=7180709888

文件名:zh-cn_windows_10_consumer_editions_version_22h2_updated_dec_2024_x64_dvd_52d3c74b.iso
SHA256:dc26559a06cfbc0ad15244a68cedd24dab3a0f406328560bfda9323e536dea59
文件大小:6.68GB
发布时间:2024-12-17
ED2K链接:ed2k://|file|zh-cn_windows_10_consumer_editions_version_22h2_updated_dec_2024_x64_dvd_52d3c74b.iso|7168671744|5758FD2724932A5E952BA0BE5BA18B80|/
BT链接:magnet:?xt=urn:btih:cdd789ef4f84cf1c97107645f47ed96f9a46533d&dn=zh-cn_windows_10_consumer_editions_version_22h2_updated_dec_2024_x64_dvd_52d3c74b.iso&xl=7168671744

文件名:zh-cn_windows_10_consumer_editions_version_22h2_updated_nov_2024_x64_dvd_3eeacab9.iso
SHA256:c0c4bf1c431e1dbcc734dbd0f20532a2472cf2d1abd428706860434034112462
文件大小:6.68GB
发布时间:2024-11-19
ED2K链接:ed2k://|file|zh-cn_windows_10_consumer_editions_version_22h2_updated_nov_2024_x64_dvd_3eeacab9.iso|7170504704|8FE1D32FF353EFA3137EA40CAF31A8A7|/
BT链接:magnet:?xt=urn:btih:d72b83eade5a945586b15ab0a2c4e3dd165f4c54&dn=zh-cn_windows_10_consumer_editions_version_22h2_updated_nov_2024_x64_dvd_3eeacab9.iso&xl=7170504704

文件名:zh-cn_windows_10_consumer_editions_version_22h2_updated_oct_2024_x64_dvd_d0cfb2e9.iso
SHA256:1db6a58f941fb9310d963ca8b1ab59dd73846f6d9978854843e6c2ecce10ddfc
文件大小:6.67GB
发布时间:2024-10-15
ED2K链接:ed2k://|file|zh-cn_windows_10_consumer_editions_version_22h2_updated_oct_2024_x64_dvd_d0cfb2e9.iso|7167156224|CFF635F6DCD2011100864BDFD3CAF429|/
BT链接:magnet:?xt=urn:btih:f5001d461ae74a2833b0cbe6d768b06f436443bc&dn=zh-cn_windows_10_consumer_editions_version_22h2_updated_oct_2024_x64_dvd_d0cfb2e9.iso&xl=7167156224

一键安装ROS2

1.一键安装ROS2

首先启动虚拟机或者启动双系统中的ubuntu,打开终端,输入下面的指令。

wget http://fishros.com/install -O fishros && . fishros
参考:https://zhuanlan.zhihu.com/p/639237347

苹果系统UTM指定版本安装

只有一台MacMiniM1的系统,如何在虚拟机安装多个MacOS版本

在MacOS系统上,支持M1的虚拟化的有VMWare FussionParallels Desktop以及开源版本UTM

前者不支持在MacOS内部再虚拟化MacOS系统,PD没有安装验证。

UTM支持MacOS系统,但要求Mac12+系统的虚拟化。

在苹果官网上,不支持MacOS11以上的系统ipsw文件下载,线上国内也很少相关的下载。

国外专门有人提供了所有Mac的系统下载。https://ipsw.me/

因此我选择MacOS12.1的版本下载:
https://updates.cdn-apple.com/2021FCSWinter/fullrestores/002-42433/F3F6D5CD-67FE-449C-9212-F7409808B6C4/UniversalMac_12.1_21C52_Restore.ipsw
https://updates.cdn-apple.com/2022FallFCS/fullrestores/012-60270/0A7F49BA-FC31-4AD9-8E45-49B1FB9128A6/UniversalMac_13.1_22C65_Restore.ipsw

Qt6.2.4在多屏显示时存在重大BUG

这是Qt6.2.4版本的多屏代码,在同一品牌和同一型号时会存在BUG.
以下是Qt6.2.3的代码,经检查Qt5.15.2/Qt6.2.5/Qt6.8.2都不会存在该BUG

static bool monitorData(HMONITOR hMonitor, QWindowsScreenData *data)
{
    MONITORINFOEX info;
    memset(&info, 0, sizeof(MONITORINFOEX));
    info.cbSize = sizeof(MONITORINFOEX);
    if (GetMonitorInfo(hMonitor, &info) == FALSE)
        return false;

    data->hMonitor = hMonitor;
    data->geometry = QRect(QPoint(info.rcMonitor.left, info.rcMonitor.top), QPoint(info.rcMonitor.right - 1, info.rcMonitor.bottom - 1));
    data->availableGeometry = QRect(QPoint(info.rcWork.left, info.rcWork.top), QPoint(info.rcWork.right - 1, info.rcWork.bottom - 1));
》》》》》
  问题在这行开始,它通过getPathInfo()获取一个友名,然后如果是相同品牌且同一型号时,其友名是相同的。从而导致data->name被初始化为友名。
    DISPLAYCONFIG_PATH_INFO pathInfo = {};
    const bool hasPathInfo = getPathInfo(info, &pathInfo);
    if (hasPathInfo) {
        DISPLAYCONFIG_TARGET_DEVICE_NAME deviceName = {};
        deviceName.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
        deviceName.header.size = sizeof(DISPLAYCONFIG_TARGET_DEVICE_NAME);
        deviceName.header.adapterId = pathInfo.targetInfo.adapterId;
        deviceName.header.id = pathInfo.targetInfo.id;
        if (DisplayConfigGetDeviceInfo(&deviceName.header) == ERROR_SUCCESS)
            data->name = QString::fromWCharArray(deviceName.monitorFriendlyDeviceName);
    }
    if (data->name.isEmpty())
        data->name = QString::fromWCharArray(info.szDevice);


《《《《《《
    if (wcscmp(info.szDevice, L"WinDisc") == 0) {
        data->flags |= QWindowsScreenData::LockScreen;
    } else {
        if (const HDC hdc = CreateDC(info.szDevice, nullptr, nullptr, nullptr)) {
            const QDpi dpi = monitorDPI(hMonitor);
            data->dpi = dpi.first > 0 ? dpi : deviceDPI(hdc);
            data->depth = GetDeviceCaps(hdc, BITSPIXEL);
            data->format = data->depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
            data->physicalSizeMM = QSizeF(GetDeviceCaps(hdc, HORZSIZE), GetDeviceCaps(hdc, VERTSIZE));
            const int refreshRate = GetDeviceCaps(hdc, VREFRESH);
            if (refreshRate > 1) // 0,1 means hardware default.
                data->refreshRateHz = refreshRate;
            DeleteDC(hdc);
        } else {
            qWarning("%s: Unable to obtain handle for monitor '%s', defaulting to %g DPI.",
                     __FUNCTION__, qPrintable(QString::fromWCharArray(info.szDevice)),
                     data->dpi.first);
        } // CreateDC() failed
    } // not lock screen

以下是Qt6.2.3的代码,经检查Qt5.15.2/Qt6.2.5/Qt6.8.2都不会存在该BUG:

static bool monitorData(HMONITOR hMonitor, QWindowsScreenData *data)
{
    MONITORINFOEX info;
    memset(&info, 0, sizeof(MONITORINFOEX));
    info.cbSize = sizeof(MONITORINFOEX);
    if (GetMonitorInfo(hMonitor, &info) == FALSE)
        return false;

    data->hMonitor = hMonitor;
    data->geometry = QRect(QPoint(info.rcMonitor.left, info.rcMonitor.top), QPoint(info.rcMonitor.right - 1, info.rcMonitor.bottom - 1));
    data->availableGeometry = QRect(QPoint(info.rcWork.left, info.rcWork.top), QPoint(info.rcWork.right - 1, info.rcWork.bottom - 1));
    data->name = QString::fromWCharArray(info.szDevice);
    if (data->name == u"WinDisc") {
        data->flags |= QWindowsScreenData::LockScreen;
    } else {
        if (const HDC hdc = CreateDC(info.szDevice, nullptr, nullptr, nullptr)) {
            const QDpi dpi = monitorDPI(hMonitor);
            data->dpi = dpi.first > 0 ? dpi : deviceDPI(hdc);
            data->depth = GetDeviceCaps(hdc, BITSPIXEL);
            data->format = data->depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
            data->physicalSizeMM = QSizeF(GetDeviceCaps(hdc, HORZSIZE), GetDeviceCaps(hdc, VERTSIZE));
            const int refreshRate = GetDeviceCaps(hdc, VREFRESH);
            if (refreshRate > 1) // 0,1 means hardware default.
                data->refreshRateHz = refreshRate;
            DeleteDC(hdc);
        } else {
            qWarning("%s: Unable to obtain handle for monitor '%s', defaulting to %g DPI.",
                     __FUNCTION__, qPrintable(QString::fromWCharArray(info.szDevice)),
                     data->dpi.first);
        } // CreateDC() failed
    } // not lock screen

安装VS2019

线上只有VS2022的安装下载,而VS2019(Visual studio 2019)版本已经被隐藏起来了,如何找出来呢?

https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/history

在fedora30下安装Qt6.2.4遇到的问题

一、安装编译环境

sudo dnf groupinstall "development tools"
sudo dnf install g++ libxkbcommon-devel libxkbcommon-x11-devel

二、安装Qt6.2.4

./qt-unified-linux-x64-online.run --mirror http://mirrors.ustc.edu.cn/qtproject/
若无法启动,可能需要安装xcb以下:
sudo dnf install xcb-util-cursor xcb-util-cursor-devel 

三、配置cmake环境变量

export PATH=/home/abc/Qt/Tools/CMake/bin:$PATH

PNG批量转换成SVG图

1.创建png2svg.ps1脚本

# 临时添加 Inkscape 的路径到当前会话的 PATH
$env:Path += ";H:\tools\png2svg\ImageMagick-7.1.1;H:\tools\png2svg\potrace-1.16.win64"

# inkscape --action-list
# pause

# 设置输入目录(包含 PNG 文件的目录)
$input_dir = "D:\aoyiduo\woterm\woterm\private\skins\blue"
#$input_dir = "H:\tools\png2svg\skin"

# 设置输出目录(与输入目录平级的 svg 目录)
$output_dir = Join-Path -Path (Split-Path -Path $input_dir -Parent) -ChildPath "svg"

# 如果输出目录不存在,则创建
if (-not (Test-Path $output_dir)) {
    New-Item -ItemType Directory -Path $output_dir | Out-Null
}

# 获取目录中的所有 PNG 文件
$png_files = Get-ChildItem -Path $input_dir -Filter *.png

# 遍历所有 PNG 文件
foreach ($file in $png_files) {
    try {
        # 设置输出文件路径(在输出目录中生成对应文件名的 SVG 文件)
        $temp_file = Join-Path -Path $output_dir -ChildPath ([System.IO.Path]::ChangeExtension($file.Name, ".bmp"))
        $output_file = Join-Path -Path $output_dir -ChildPath ([System.IO.Path]::ChangeExtension($file.Name, ".svg"))
        
        # 如果目标文件已存在,先删除旧文件
        if (Test-Path $output_file) {
            Write-Output "File already exists, deleting: $($output_file)"
            Remove-Item -Path $output_file -Force
        }
        # alpha default on
        # magick $file.FullName -alpha on $temp_file
        magick $file.FullName $temp_file
        # 背景是黑色,图案是透明色。
        # potrace $temp_file -s -o $output_file
        # 图案是黑色,背景是透明色。
        potrace $temp_file --invert -s -o $output_file
        
        # pause
        Remove-Item $temp_file

        # 打印成功信息
        Write-Output "Converted to vector: $($file.Name) -> $($output_file)"
    } catch {
        # 打印错误信息
        Write-Error "Failed to convert: $($file.FullName). Error: $_"
    }
}

2.创建一个调用脚本,用于临时解决脚本权限问题

 powershell -ExecutionPolicy Bypass -File "png2svg.ps1"
 pause

在openwrt系统中,其ssh是dropbear开发的简化版

在openwrt系统中,其ssh是dropbear开发的简化版,故它是不能直接openssh产生的公私钥。需要使用专用的dropbearkey命令来生成私钥及提取公钥。

dropbearkey -t rsa -f ~/.ssh/id_dropbear
dropbearkey -y -f ~/.ssh/id_dropbear
rsync -avz -e "ssh -i /path/to/private_key" /local/path/ user@remote_server_ip:/remote/path/

如何让VS编码体验如同QtCreator一样

已经习惯Qt开发后,转到VS2022后,VC的一些休验是很不适应的。

第一步:安装Qt-Assist和QtClasss向导插件【扩展》管理扩展】。

第二步:修改编码风格【工具》选项》文本编辑器》C/C++》代码样式》格式设置】
》保持原有的VisualSudio设置样式。
》换行》不要对单行代码块换行。
》新行》大括号的一些设置。

第三步:修改快捷键【工具》选项》环境》键盘】选择VisualAssist(VisualStudio)的键盘方案。

openwrt的rsync库手动安装

最近折腾openwrt相关的服务器工具,发现rsync直接用opkg命令无法安装rsync至系统中,故可采用手动方安装。

第一步:找到openwrt的仓库。
https://downloads.openwrt.org/releases/18.06.9/packages/aarch64_cortex-a53/

第二步:openwrt相关子库有base/luci/routing/telephony等。在这几个子库目录下搜索rsync,然后在https://downloads.openwrt.org/releases/18.06.9/packages/aarch64_cortex-a53/packages目录下,找到路径:https://downloads.openwrt.org/releases/18.06.9/packages/aarch64_cortex-a53/packages/rsync_3.1.3-1_aarch64_cortex-a53.ipk

第三步:本地化安装:
opkg install ./rsync_3.1.3-1_aarch64_cortex-a53.ipk