RaidenVideoRipper 1.0.3.0

雷电视频开膛手版本 1.0.3.0
使用 FFmpeg 添加了视频稳定功能。
这是从 C++ 到 Python、从 Qt 到 wxWidgets 过渡的实验性版本,它将允许您快速向应用程序添加新功能并简化开发。内置VLC用于播放视频。当前的测试版本仅适用于 Github,版本 1.0.4.0 已在 Microsoft Store 和 Github 中发布。

https://github.com/zefir1990/RaidenVideoRipper/releases/tag/1.0.3.0

flac2mp3 – 批量 FLAC 到 MP3 转换器

当您拥有大量无损 FLAC 格式的音乐库并且需要便携式 MP3 副本时,手动操作并不是一种选择。 flac2mp3 是一个干净的 Python 脚本,它递归地查找所有 FLAC 文件并使用 ffmpeg 将它们转换为高质量的 MP3。

为什么选择 flac2mp3?

该脚本使用 libmp3lame 编码器和 -q:a 0 — 最高可变比特率质量设置。与原始 FLAC 的听觉差异几乎不存在,而文件大小却大幅下降。

功能

  • 递归搜索:遍历所有子目录,自动查找每个 .flac 文件。
  • 多种导出模式:就地转换、镜像目录树或扁平单文件夹转储。您甚至可以在一次运行中组合多种模式。
  • 并行处理:通过–parallel-run=4来利用多个CPU核心并显着加快批量转换速度。
  • 干净处理:正确处理包含空格和特殊字符的文件和文件夹名称。
  • 用法

    最简单的情况 – 就地转换当前目录中的所有 FLAC:

    python flac2mp3.py
    

    一个更高级的现实示例 – 使用 4 个并行线程将所有 FLAC 从 D:\Downloads 转换为 D:\mp3s,并保留目录结构:

    python flac2mp3.py D:\Downloads\ --output-directory-save-directories-tree=D:\mp3s\ --parallel-run=4
    

    引擎盖下

    该脚本的核心是遍历文件系统,为每个文件构建一个 ffmpeg 命令:

    ffmpeg -i "song.flac" -c:a libmp3lame -q:a 0 "song.mp3"
    

    并生成子进程来执行转换,可以选择使用线程池来实现并发。

    先决条件

  • Python 3.x
  • ffmpeg已安装并在您的系统路径中可用
  • 该脚本具有零额外的 Python 依赖项——纯标准库。

    https://github.com/zefir1990/flac2mp3

    本地视频生成:ComfyUI 和 LTX-2.3

    以前,使用神经网络创建视频是 Runway 或 Luma 等云服务的特权。如今,如果您拥有现代 Nvidia 显卡,您就可以直接在计算机上生成高质量视频。在这篇文章中,我将告诉您如何使用 ComfyUI 和有效的 LTX-2.3 模型设置本地视频生成。

    视频生成工具

    对于工作,我们需要:
    ComfyUI:强大的界面,采用基于节点的架构,允许您灵活地自定义生成过程。
    LTX-2.3: Lightricks 的现代型号,经过优化,可以以相对适中的视频内存要求创建流畅且详细的视频。

    硬件要求

    生成视频是一个比处理图像更加消耗资源的过程:
    显卡 (GPU): 具有 8 GB VRAM 的 Nvidia RTX 是 768×512 分辨率的最低要求。为了舒适的操作和更高的分辨率,非常需要 16-24 GB 的 VRAM。
    随机存取存储器 (RAM): 至少 32 GB。下载时视频模型和 VAE 会占用大量空间。
    磁盘空间: 模型本身和相关组件约 500 GB。

    设置和启动

    ComfyUI中启动LTX-2.3的流程如下:
    1. 更新ComfyUI:该模型相对较新,因此请确保您安装了最新版本的界面。
    2. 安装工作流程:最简单的方法是找到现成的 LTX Video JSON 模板。该模型需要特定的节点来处理视频潜在空间。
    3. 提示和参数:用英文输入场景描述。请注意,LTX-2.3 能够很好地理解运动(例如“摄像机绕轨道运行”、“快速运动”)。

    为什么选择LTX-2.3?

    LTX-2.3 之所以引人注目,是因为它提供的结果与专有云服务相当,但在本地运行。这给你:
    完全隐私:您的提示和生成的视频不会发送到其他人的服务器。
    控制:您可以尝试帧速率 (FPS)、分辨率和提示强度,而无需为每次尝试付费。

    本地视频生成仍在积极开发中,LTX-2.3 是进入“家庭好莱坞”世界的绝佳入口。

    链接

    https://github.com/comfyanonymous/ComfyUI
    https://huggingface.co/Lightricks/LTX-Video

    通过 Chisel 在客户端之间进行端口转发:没有 L3 的精简隧道

    当两个设备位于 NAT 或严格的防火墙后面并且无法直接“看到”对方时,VPN 似乎是标准解决方案。但成熟的 L3 隧道(如 WireGuard 或 OpenVPN)通常是多余的:它需要 root 权限、设置虚拟接口,并且可能与现有路由冲突。

    在这种情况下,使用 Chisel 会很方便 – 一种在 HTTP 之上运行并使用 WebSocket 进行数据传输的 TCP/UDP 隧道。在这篇文章中,我将展示如何通过中间服务器将端口从一个客户端“转发”到另一个客户端。

    它是如何工作的?

    想象一下这种情况:您有 客户端 A(例如,您的家庭服务器)、客户端 B(您的工作笔记本电脑)和具有公共 IP 地址的 VPS。客户端A和B可以访问VPS,但不能互相访问。

    转发方案将如下所示:
    1. 客户端 A 连接到 VPS 并在服务器上打开“反向”端口。现在,到达服务器端口 X 的所有内容都会转到客户端 A 的端口 Y。
    2. 客户端 B 连接到 VPS 并将端口 Z 从其本地计算机转发到服务器的端口 X。
    3. 结果,客户端 B 访问 localhost:Z 并最终到达 客户端 A:Y

    当与 VPS 的通信未实现 L3 层或无法在客户端之间配置路由时,此方法是解决方案之一。我们专门从事应用程序和端口级别的工作。

    第 1 步:启动服务器

    在您的 VPS 上,只需在服务器模式下运行 Chisel 即可。需要 --reverse 标志来允许客户端打开服务器端的端口。

    chisel server --port 8080 --reverse
    

    第 2 步:连接客户端 A(源)

    假设客户 A 希望在端口 3000 上开放对其本地 Web 服务器的访问。他连接到 VPS 并说:“在服务器上保留端口 2000,并将其转发给我到 3000。”

    chisel client vps-ip:8080 R:2000:127.0.0.1:3000
    

    现在,VPS 上的端口 2000(在环回接口上)通向客户端 A。

    第 3 步:连接客户端 B(消费者)

    现在客户端B想要访问这个资源。它连接到同一个VPS并将其本地端口8080转发到服务器的端口2000。

    chisel client vps-ip:8080 8080:127.0.0.1:2000
    

    准备好!现在,当您在客户端 B 上打开 http://localhost:8080 时,您将看到该服务在客户端 A 上运行。

    安全性和细微差别

    Chisel 支持通过 --auth 标志进行身份验证,在通过公共服务器工作时强烈建议这样做。您还可以使用 TLS 证书来加密流量。

    这种方法的主要优点是不需要 TUN/TAP 设备和复杂的路由表。这是一个精简的隧道,只做一件事:通过 WebSocket 连接绑定端口。如果您将 Chisel 配置为通过端口 443 工作,这甚至可以通过公司代理工作。

    输出

    Chisel 是用于特定网络任务的实用程序。当您需要在隔离节点之间转发端口而不设置成熟的 VPN 时,通过中继服务器的正向和反向隧道组合是完全可行的解决方案。

    链接

    https://github.com/jpillora/chisel

    本地 Vibe 编码:LM Studio、VS Code 和 Continue

    如果您希望使用神经网络来帮助编写代码(所谓的 Vibe 编码),并且您有一台相当强大的计算机,例如配备 Nvidia RTX 显卡,那么您可以在您的计算机上完全免费地部署整个环境。这解决了付费订阅的问题,并允许您安全地处理 NDA 下的项目,因为您的代码不会发送到任何地方。在这篇文章中,我将描述如何组装 LM Studio、VS Code 和 Continue 扩展的本地包。

    本地 Vibe 编码工具

    为了舒适的工作,我们需要三个主要组件:
    LM ​​Studio: 一个用于下载和运行本地 LLM 的便捷应用程序。它承担了使用 GGUF 模型的所有复杂性,并建立了一个与 OpenAI API 兼容的本地服务器。
    VS Code: 流行且熟悉的代码编辑器。
    继续: VS Code 扩展,将神经网络直接集成到工作环境中。允许您聊天、突出显示代码以进行重构,并支持自动完成。

    硬件要求

    本地语言模型是内存密集型的:
    显卡 (GPU): Nvidia,配备 8 GB VRAM 或更高(可轻松处理具有 7-80 亿个参数的模型)。较重的型号将需要 16 GB 的 VRAM。
    磁盘空间:约500 GB用于存储各种下载的模型。

    配置链接

    设置过程非常简单,不需要在终端中进行复杂的操作:
    1.下载并安装LM Studio。使用内置搜索查找轻量级模型,例如 Qwen Codergemma3:12b
    2. 在 LM Studio 中,转到“本地服务器”选项卡并单击“启动服务器”。默认情况下,它将从“http://localhost:1234/v1”启动。
    3. 打开 VS Code 并从插件商店安装 Continue 扩展。
    4. 打开“继续”配置文件并添加新模型,指定“openai”提供程序以及 LM Studio 中的本地服务器地址。

    然后,您可以直接在“继续”侧栏中与当地的法学硕士进行交流,询问有关您的代码的问题,并生成新的组件。

    为什么会这样?

    正如我之前所写,法学硕士在扁平结构和 WET(将所有内容写入两次)代码方面做得更好。在设计复杂的架构时,局部参数模型可能不如 GPT-4 这样的巨头,但它们完全能够生成样板代码、重构简单功能和快速原型设计。

    此外,通过本地 Vibe 编码,您的代码永远不会离开机器。这使得这种组合非常适合企业发展和处理敏感数据。

    输出

    局部神经网络无法完全取代程序员或设计复杂的系统。然而,LM Studio + VS Code +Continue 的组合提供了独立于云服务的能力并维护了隐私。如果您愿意忍受小模型的限制并独立控制项目架构,那么这是一个用于日常任务的完全可用的辅助工具。

    链接

    https://code.visualstudio.com/
    https://lmstudio.ai/
    https://continue.dev/

    来源

    https://youtu.be/IqqCwhG46jY
    https://www.youtube.com/watch?v=7AImkA96mE8

    本地音乐生成:ComfyUI 和 ACE-Step-1.5 模型

    如今,您不必依赖云服务来创建内容:您可以完全在自己的硬件上生成高质量的音乐。在这篇文章中,我将描述如何使用 ComfyUI 在计算机上本地运行现代 ACE-Step-1.5 模型。

    ComfyUI 采用基于节点的架构。这使您能够:
    – 完全控制音频生成的每个阶段。
    – 轻松共享现成的“工作流程”。

    ACE-Step-1.5 是一种高级音乐生成模型,需要大量计算资源。其硬件要求比许多简单的合成器要高:
    显卡 (GPU): Nvidia RTX,具有 8 GB VRAM 或更高(建议 12 GB+),可实现舒适的高品质工作。
    随机存取存储器 (RAM): 至少 16 GB(最好 32 GB 及以上)。
    处理器(CPU):现代多核处理器,对 AVX/CUDA 计算有良好的支持。
    磁盘空间: 模型和组件大约需要 20–50 GB。

    运行 ACE-Step-1.5 最简单的方法是使用现成的音频生成模板。只需在工作流程窗口中搜索音乐文本到音频并安装即可。

    在“提示输入”节点中编写描述流派和情绪的提示(例如,“带有重低音的令人振奋的合成波曲目”)。指定所需的持续时间并按运行
    第一代可能需要一些时间,因为模型将被加载到显卡内存中并处理复杂的声学模式。

    https://github.com/comfyanonymous/ComfyUI
    https://www.youtube.com/watch?v=UAlLD5fS7-c

    Raspberry PI 3 作为 Wi-Fi 路由器

    互联网上有很多关于如何从 Raspberry Pi (RPI) 制作 Wi-Fi 路由器的文章,在这篇文章中我将简要描述我创建带有板上单盒的 Wi-Fi 路由器的方法。所描述的方法在当前有效,并且将来可能会发生很多变化。因此,请使用此注释作为您将遇到的情况的粗略概述。

    SSH

    对于那些不知道如何使用 OpenWrt 的人,我建议安装 DietPI。
    通过 eth0 将 RPI 连接到当前路由器,然后通过 SSH 连接。您可以在路由器的 dhcp 面板中找到 RPI IP 地址。直接连接到 root,例如如下所示:

    ssh root@[IP_ADDRESS]
    

    接入点

    root 的默认 DietPI 密码是 Dietpi。连接后,您将看到 DietPI 安装程序/配置程序。完成后,由于设备重新启动,您将需要重新连接。

    首先,您需要配置 hostapd 以便设备可以看到您的接入点。如果没有安装hostapd,则通过apt安装。

    接下来,您需要为 hostapd 编写配置。我的配置示例:

    interface=wlan0
    driver=nl80211
    ssid=MyPiAP
    hw_mode=a
    channel=157
    wmm_enabled=1
    
    auth_algs=1
    wpa=2
    wpa_passphrase=your_password
    wpa_key_mgmt=WPA-PSK
    rsn_pairwise=CCMP
    ieee80211n=1
    ieee80211ac=0
    ieee80211ax=0
    country_code=RU
    

    hostapd配置的含义可以在手册中找到。然而,重要的是要为自己配置它 – 频道(2.4GHz 或 5GHz)、国家/地区代码,否则没有这些,您的本地化设备就可以正确地与接入点配合使用,我已经完成了这一点并且知道,所以请务必设置您的国家/地区。

    DHCP

    接下来,安装并配置 dnsmasq 以实施 DHCP。这是连接计算机确定 IP 地址和 DNS 服务器所必需的。
    我的配置示例:

    interface=wlan0
    dhcp-range=172.19.0.10,172.19.0.200,255.255.255.0,12h
    
    dhcp-option=3,172.19.0.1
    
    dhcp-option=6,1.1.1.1,8.8.8.8
    
    no-resolv
    
    server=1.1.1.1
    server=8.8.8.8
    

    这是允许您连接到接入点并获取 IP 地址的最低配置。接下来,您需要配置路由和 NAT。这是连接计算机可以访问互联网所必需的。

    这里的说明涉及常规 Debian 兼容系统上的典型路由设置类别,互联网上有很多关于该系统的文章。然后这一切都取决于您追求的目标,例如,作为系统中的新接口连接到外部服务器,或者只是执行 wlan0 <-> eth0,这是 RPI 细节结束的地方,然后根据您的喜好进行配置。

    我还想提一下需要通过systemctl配置自定义系统服务;可能需要将服务连接成一条链;所有这些都在网络上的 systemctl 手册中。如果服务层面有问题,则检查journalctl中的日志。

    Wi-Fi 适配器

    坦白说,内置的 RPI3 性能很弱,而且不支持 5GHz。因此,我通过 USB 2 将 RITMIX RWA-150 适配器连接到 Realtek RTL8811CU 芯片组上。驱动程序已添加到我的 DietPi 版本中的 Linux 内核中。接下来,使用dietpi-config,我完全关闭了内置Wi-Fi。结果,只剩下一个wlan0 USB适配器了。

    结论

    从速度测量来看,我们能够通过 Wi-Fi 从 RPI3 中挤出约 50Mbps(连接 5GHz 适配器后),这意味着与直接连接到路由器相比,速度损失了一半。我承认更高效的 RPI 模型将使您获得更好的结果,而且专门的 OpenWrt 设备和现成的解决方案可能更适合您的需求。

    来源

    https://forums.raspberrypi.com/viewtopic.php?t=394710
    https://superuser.com/questions/1408586/raspberry-pi-wifi-hotspot-slow-internet-speed
    https://www.youtube.com/watch?v=jlHWnKVpygw

    本地图像生成:ComfyUI 和 FLUX 模型

    如今,您不必依赖云服务:您可以完全在自己的硬件上生成高质量的图像。在这篇文章中,我将描述如何使用 ComfyUI 在计算机上本地运行现代 FLUX 模型。

    ComfyUI 采用基于节点的架构。这使您能够:
    – 完全控制生成的每个阶段。
    – 轻松共享现成的“工作流程”

    FLUX是大型模型,因此硬件要求比SD 1.5或SDXL更高:
    显卡 (GPU): Nvidia RTX,具有 12 GB VRAM 或更高(为了舒适工作)。如果您有 8 GB 或更少,则必须使用量化版本(GGUF 或 NF4)。
    随机存取存储器 (RAM): 至少 16 GB(最好 32 GB 及以上)。
    磁盘空间: 模型和组件大约需要 20–50 GB。

    启动 FLUX 最简单的方法是使用现成的模板。只需在工作流程窗口中搜索 Flux Text to Image 并安装即可。

    在“Text to Image (Flux.1 Dev)”节点中用英文编写提示,选择分辨率(FLUX 适用于 1024×1024 甚至更高),然后按 RUN

    第一代可能需要一些时间,因为模型将加载到显卡内存中。

    https://github.com/comfyanonymous/ComfyUI

    火星矿工 v2

    [中断:红色地平线星际新闻服务]

    主持人:晚安,火星!主要的穹顶新闻服务与您同在。今天,火星矿工殖民地的管理部门宣布对所有定居者和战略模块进行大规模软件更新。

    主要活动:

    1.更新自动机的神经回路控制论部门已确认所有自主采矿单元已成功更新。新的战略思维协议消除了发展逻辑中的关键错误。现在,资源竞争的模拟将变得更加难以预测和艰难。定居者可以为他们的人工智能伙伴独立设置战术分析时间。

    2. 虚拟训练场的整合 新抵达的殖民者可以使用个人训练模拟器。现在,您可以在单人游戏模式中磨练您的扇区占领技能,然后再进入真正的火星地雷战斗。该系统配备了更新的培训协议。

    3. 穹顶之间通信信道的稳定 通信工程师已经完成了卫星星座的校准。远程前哨站之间的多人交互界面现在可以立即运行。战略行动期间导致连接中断的异常情况已被消除。

    4、潜意识计算:更新神经触发器技术部门实现了并行计算系统。人工智能战术数据处理现在在后台进行,不会对个人终端的 CPU 造成负担。在游戏的关键阶段不再有暂停。

    主持人:管理部门提醒您,新版游戏模拟器已经加载到中央终端中。如需同步数据,建议重启本地接口。

    火星的未来掌握在你的手中。留在红色地平线频率上与我们在一起。

    https://demensdeum.com/games/mars-miners/

    在 Docker 中运行 macOS

    在 Docker 中运行 macOS 是可能的,尽管有人反对说这是不可能的,而且据说 macOS 有某种保护系统可以抵抗这种情况。

    历史上,在 PC 机上运行 macOS 的一些经典方法是:
    *黑客塔
    * 虚拟化,例如使用VMWare

    Hackintosh 假设存在与原始 Mac 相似或非常接近的硬件。虚拟化对硬件有一定的要求,但通常不像 Hackintosh 那样严格。然而,在虚拟化的情况下,存在性能问题,因为 macOS 并未针对在虚拟环境中工作进行优化。

    最近,在 Docker 中运行 macOS 已经成为可能。这是通过 Docker-OSX 项目实现的,该项目提供现成的 macOS 映像以在 Docker 上运行。值得注意的是,Docker-OSX 不是苹果官方项目,不受其支持。但是,它允许您在 Docker 上运行 macOS 并使用它来开发和测试应用程序。

    首批在 Docker 中运行 macOS 的项目之一:
    https://github.com/sickcodes/Docker-OSX

    然而,我始终无法完全启动它;加载到 Recovery OS 后,我的键盘和鼠标直接掉落,无法继续安装。同时,在第一个启动菜单中,键盘起作用。也许事实是这个项目不再受到如此积极的支持,并且在 Windows 11 + WSL2 + Ubuntu 上运行时存在一些特定问题。

    目前最活跃的项目之一:
    https://github.com/dockur/macos

    允许您在 Docker 中运行 macOS,界面通过 VNC(?) 转发通过浏览器工作。启动后,macOS 可访问 http://localhost:5900

    我设法运行这个项目并在 Windows 11 + WSL2 + Ubuntu 上安装 macOS Big Sur(2020 分钟),但只能通过更改 compose 文件来实现,即:

    environment:
        VERSION: "11"
        RAM_SIZE: "8G"
        CPU_CORES: "4"
    

    版本:“11”是 macOS 的版本,在本例中为 Big Sur
    RAM_SIZE:“8G”是为 macOS 分配的 RAM 量
    CPU_CORES:“4”是分配给macOS的CPU核心数

    目前,运行 macOS tahoe (16) 也是可能的,但项目开发人员正在努力解决许多问题。

    这种启动 macOS 的原始方式允许您在非 Mac 硬件上尝试它,并在受够了痛苦后,再给自己买一台 Mac。但是,它对于在旧系统上测试软件和一般开发很有用。

    在 WSL2 中构建 Swift (Linux)

    Swift 生态系统正在 Apple 平台之外积极开发,如今在 Windows 下使用 Windows Subsystem for Linux (WSL2) 进行编写已经相当方便。值得考虑的是,对于 Linux/WSL 下的程序集,可以使用 Swift 的轻量级版本 – 无需专有的 Apple 框架(例如 SwiftUI、UIKit、AppKit、CoreData、CoreML、ARKit、SpriteKit 和其他 iOS/macOS 特定的库),但对于控制台实用程序和后端来说,这已经足够了。在这篇文章中,我们将逐步介绍准备环境并从 WSL2 中的源代码构建 Swift 编译器的过程(以 Ubuntu/Debian 为例)。

    我们更新软件包列表和系统本身:

    sudo apt update && sudo apt upgrade -y
    

    安装构建所需的依赖项:

    sudo apt install -y \
      git cmake ninja-build clang python3 python3-pip \
      libicu-dev libxml2-dev libcurl4-openssl-dev \
      libedit-dev libsqlite3-dev swig libncurses5-dev \
      pkg-config tzdata rsync
    

    安装编译器和链接器(LLVM 和 LLD):

    sudo apt install -y llvm lld
    

    克隆包含所有依赖项的 Swift 存储库:

    git clone https://github.com/apple/swift.git
    cd swift
    utils/update-checkout --clone
    

    用 swiftc 安装 `swiftly` 和现成的 swift

    curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz && \
    tar zxf swiftly-$(uname -m).tar.gz && \
    ./swiftly init --quiet-shell-followup && \
    . "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" && \
    hash -r
    

    让我们开始构建(这将需要很长时间):

    utils/build-script \
      --release-debuginfo \
      --swift-darwin-supported-archs="x86_64" \
      --llvm-targets-to-build="X86" \
      --skip-build-benchmarks \
      --skip-test-cmark \
      --skip-test-swift \
      --skip-ios \
      --skip-tvos \
      --skip-watchos \
      --skip-build-libdispatch=false \
      --skip-build-cmark=false \
      --skip-build-foundation \
      --skip-build-lldb \
      --skip-build-xctest \
      --skip-test-swift
    

    构建完成后,将编译器的路径添加到PATH(指定构建文件夹的路径):

    export PATH=/root/Sources/3rdparty/build/Ninja-RelWithDebInfoAssert/swift-linux-x86_64/bin/swiftc:$PATH
    

    我们检查已安装的 Swift 版本是否正常工作:

    swift --version
    

    创建一个测试文件并运行它:

    echo "print(\"Hello, World!\")" > hello.swift
    swift hello.swift
    

    您还可以编译二进制文件并运行它:

    swiftc hello.swift
    ./hello
    

    来源

    特弗莱彻

    Teflecher 是一款快速、交互式、跨平台的测验应用程序,构建于 Kotlin Multiplatform (KMP)Compose Multiplatform 之上。它允许用户直观地从本地 JSON 文件或远程 URL 加载测验、回答多项选择题、查看正确答案的即时反馈并跟踪结果。

    网址:
    https://demensdeum.com/software/teflecher/

    GitHub:
    https://github.com/zefir1990/teflecher

    也是基于Ionic + Capacitor技术的Teflecher Editor格式的测验编辑器

    网址:
    https://demensdeum.com/software/teflecher-editor/

    GitHub:
    https://github.com/zefir1990/teflecher-editor

    模式解释器实践

    上一篇文章中,我们研究了解释器模式的理论,了解了 AST 树是什么以及如何抽象终结符和非终结符表达式。这次,让我们抛开理论,看看如何将这种模式应用到我们每天都在使用的严肃商业项目中!

    剧透:您现在可能正在使用解释器模式,只需在浏览器中阅读此文本即可!

    业界使用此模式的最引人注目、也许也是最重要的示例之一是 JavaScript。这种语言最初是“在膝盖上”创建的,如今,由于解释的概念,它可以在数十亿台设备上运行。

    改变互联网的 10 天

    JavaScript 的历史充满了传奇。 1995 年,Brendan Eich 在 Netscape Communications 工作时,接到的任务是创建一种可以直接在浏览器 (Netscape Navigator) 中运行的简单脚本语言,以使网页具有交互性。管理层想要一种类似于当时超级流行的 Java 语法的东西,但不是针对专业工程师,而是针对网页设计师。

    Eich 仅用了10 天来编写该语言的第一个原型,该语言当时被称为 Mocha(然后是 LiveScript,出于营销原因才称为 JavaScript)。这种热潮并非偶然:微软紧随其后,同时也在积极准备自己的脚本语言 VBScript,以便嵌入 Internet Explorer 浏览器中。 Netscape 迫切需要发布回应,以免在迫在眉睫的浏览器战争中落败。

    根本没有时间将复杂的编译器编写成机器代码。对于 Eich 来说,显而易见且最快的解决方案是经典解释器的架构。

    第一个解释器(SpiderMonkey)的工作方式如下:

    1. 它从页面读取脚本的文本源代码。
    2. 词法分析器将文本分解为标记。
    3. 解析器构建了一个抽象语法树(AST)。就解释器模式而言,这棵树由终端表达式(字符串,数字如42)和非终端(函数调用,语句如If、While)组成。
    4. 然后虚拟机一步步“遍历”这棵树,在每个节点执行嵌入其中的指令(调用类似于 Interpret() 的方法)。

    上下文和对象

    还记得在经典实现中我们必须传递给 Interpret(Context context) 方法的 Context 对象吗?解释器需要它来存储当前的内存状态。

    就 JavaScript 而言,顶层上下文的角色由全局对象(例如浏览器中的窗口)扮演。例如,当您的 AST 节点尝试通过 document.write(“Hello”) 将文本写入屏幕时,解释器会访问其上下文(文档对象)并调用所需的内部浏览器 API。

    多亏了解释器,JavaScript 才能够如此轻松地与 DOM(文档对象模型)进行交互 – 这些都只是上下文中可由树节点访问的对象。

    解释器的演变:JIT 编译

    从历史上看,浏览器中的 JS 长期以来一直是“纯粹”的解释器。而这有一个很大的缺点——速度慢。每次执行脚本时解析树并缓慢遍历每个节点会减慢复杂的 Web 应用程序的速度。

    随着 2008 年 Google V8 引擎(内置于 Chrome 中)的出现,一场革命发生了。工程师们意识到,对于现代网络来说,一个解释器是不够的。引擎变得更加复杂:它仍然构建 AST 树,但现在使用 JIT(即时)编译

    现代 JS 引擎(V8、SpiderMonkey)的工作方式就像一个复杂的管道:

    1. 快速而愚蠢的基本解释器立即开始执行您的 JS 代码,甚至无需等待它编译(经典模式在这里仍然有效)。
    2. 同时,引擎会监控代码的“热门”部分(被调用数千次的循环或函数)。
    3. 这些部分由 JIT 编译器直接编译为优化的机器代码,绕过缓慢的解释器。

    正是解释器的即时启动和编译的计算能力的结合让 JavaScript 占领了世界,成为服务器 (Node.js) 和移动应用程序 (React Native) 的语言。

    游戏行业的翻译

    尽管 C++ 在重型计算领域占据主导地位,但解释器模式仍然是游戏开发中用于创建游戏逻辑的行业标准。为了什么?这样游戏设计师就可以制作游戏,而无需“放弃”引擎或需要不断重新编译引擎的风险。

    一个很好的历史例子是UnrealScript – 虚幻竞技场和战争机器游戏的逻辑是在虚幻引擎1、2和3中编写的语言。文本被编译成紧凑的抽象机器字节码,然后由引擎的虚拟机逐步(解释)。

    可视化图形脚本(蓝图)

    如今,文本已被可视化编程所取代 – 虚幻引擎 4 和 5 中的蓝图系统。

    如果您曾经在虚幻引擎中打开过蓝图,您就会看到很多通过电线连接的节点。从架构上来说,整个蓝图图是绘制在屏幕上的巨大抽象语法树 (AST)

    1. 终端表达式:常量节点。例如,仅存储数字 42 或字符串的节点。它们在解释时返回特定值。
    2. 非终止表达式:计算节点(添加)或流控制节点(分支)。它们具有参数输入,解释器首先对其进行递归计算,然后将结果作为输出引脚生成。

    而上下文在这里的作用是由特定游戏对象(Actor)实例的记忆来扮演的。解释器机器安全地“行走”通过该图,请求数据并执行转换。

    解释器还用在什么地方?

    解释器模式几乎可以在任何需要执行动态指令的复杂系统中找到。以下只是商业软件中的一些示例:

    • 解释型编程语言(Python、Ruby、PHP)。它们的整个运行时基于经典模式。例如,CPython 参考实现首先将您的 .py 脚本解析为 AST,将其编译为字节码,然后一个巨大的虚拟机(计算循环)逐步解释该字节码。
    • Java 虚拟机 (JVM)。 最初,Java 代码不是编译成机器指令,而是编译成字节码。当您运行应用程序时,JVM 充当解释器(尽管使用积极的 JIT 编译,就像在 V8 中一样)。
    • 数据库和 SQL 当您在 PostgreSQL 或 MySQL 中发出 SQL 查询(SELECT * FROM users)时,数据库引擎充当解释器。它执行词法分析,构建 AST 查询树,生成执行计划,然后通过迭代表的行来逐字“解释”该计划。
    • 正则表达式 (RegEx)。任何正则表达式引擎都会在内部将字符串模式(例如 ^\d{3}-\d{2}$)解析为状态图 (NFA/DFA 自动机),然后内部解释器会通过该状态图,将每个输入字符与该图的顶点进行匹配。
    • Unity Shader Graph / 虚幻材质编辑器 – 将视觉节点解释为模块化着色器代码 (GLSL/HLSL)。
    • Blender 几何节点 – 解释数学和几何运算以按程序实时生成 3D 模型。

    总计

    解释器模式早已超出了“编写自己的计算器”的范围。这是最有力的行业标准。从每天在浏览器幕后执行数十亿字节代码的 JavaScript 引擎,到无需 C++ 知识即可构建复杂逻辑的游戏设计者,解释器仍然是现代 IT 开发中最重要的架构概念之一。

    Glazki TV:互联网电视的现代播放器

    Glazki TV 是一款现代、高性能的互联网电视 (IPTV) 播放器,建立在 React Native 和 Expo 的基础上。该项目注重易用性和速度,为在移动设备和浏览器中观看 IPTV 频道提供便捷的界面。

    主要功能

    • 📺频道浏览:浏览数千个频道,并进行分类以便于导航。
    • 🔍搜索:按名称快速查找您需要的频道。
    • ❤️ 收藏夹:保存您最喜爱的频道以便快速访问(数据保存在本地)。
    • 🔗深层链接:共享自动打开频道的直接链接。
    • 🌓主题支持:界面自动适应系统深色或浅色主题。
    • 🌐网络支持:播放器在浏览器中具有 URL 同步功能。

    技术栈

    该项目基于现代开发工具:

    • 框架: React Native + Expo
    • Video Player: expo-video (замена устаревшему expo-av)
    • UI 工具包:react-native-paper
    • 播放列表解析器: iptv-playlist-parser

    网页版:
    https://demensdeum.com/software/glazki-tv/

    谷歌播放版本:
    https://play.google.com/store/apps/details?id=com.demensdeum.glazkitv

    该项目仍在继续发展,我欢迎任何反馈!

    火焰钢:死亡面具2

    在昏暗、霓虹灯闪烁的数字地下世界深处,新的挑战正在等待着。我们很高兴能够拉开Flame Steel: Death Mask 2的帷幕,这是一款融合了复古赛博朋克美学与现代实时游戏玩法的多人 3D 地下城探索游戏。

    🕹️什么是《火焰钢:死亡面具 2》?

    想象一下在程序生成的迷宫中醒来,其中每个影子都可能是另一个玩家或敌对的“过滤器”实体。 Flame Steel: Death Mask 2 让您扮演探索者的角色,在基于 Flame Steel Engine 2 和 Three.js 构建的世界中遨游。

    该游戏目前正处于开发的早期阶段,但核心体验已经上线并可供探索。

    🚀 主要功能

    • 多人探索:网格中你并不孤单。当您在迷宫般的走廊中航行时,可以实时看到其他玩家。
    • 程序地下城:没有两次运行是相同的。服务器生成充满神秘和危险的新地图。
    • 终端:对于那些更喜欢“实际操作”方法的人来说,集成的命令行界面允许您直接与系统交互 – 执行高级操作、调试或只是与其他搜索者聊天。
    • 战斗与战斗生存:与过滤器对抗以赚取比特,然后使用这些比特来解锁宝箱并升级您的统计数据。关注您的健康;生存没有保障。
    • 复古赛博朋克美学:高对比度的视觉效果和坚韧的氛围,向经典赛博朋克时代致敬。

    🛠️面具背后的技术

    该游戏专为浏览器而构建,利用:

    • 前端:Vanilla JavaScript 和 Three.js,可实现流畅的 3D 渲染。
    • 后端:Node.js 和 WebSockets (ws),用于实现闪电般快速的多人游戏同步。
    • 基础设施:用于数据持久化的 MongoDB 和用于实时空间索引的 Redis。

    🗺️下一步是什么?

    我们才刚刚开始。作为抢先体验项目,死亡面具 2 将收到频繁的更新,包括:

    • 新的实体类型和复杂的战斗机制。
    • 更深入的传说和环境故事。
    • 增强的终端命令和社交功能。
    • 视觉和性能优化。

    🔗加入网格

    想测试一下你的勇气吗?立即输入您的代号并初始化您的身份:

    👉 玩《火焰钢:死亡面具 2》

    随着我们不断拓展数字前沿,请继续关注更多更新。欢迎您使用服务。它需要你。

    乌什基广播电台

    Ushki-Radio 是一款用于在线广播的跨平台广播播放器,专注于简单性和聆听乐趣。没有不必要的功能,没有超载的接口 – 只需打开它并聆听即可。


    https://demensdeum.com/software/ushki-radio

    该项目使用开源广播浏览器,使来自世界各地的数千个广播电台可以在应用程序中使用。您可以按名称、流派或受欢迎程度搜索它们,将它们添加到您的收藏夹并快速返回您最喜欢的电台。

    Ushki-Radio 非常适合背景广播播放器的角色:它会记住最后一个电台,允许您控制音量并且不需要复杂的设置。界面简洁易懂 – 一切都经过精心设计,不会分散音乐、对话和广播的注意力。

    从技术上讲,该项目是基于 React Native 和 Expo 构建的,因此它既可以在浏览器中运行,也可以作为本机应用程序运行。在底层,expo-av 用于播放音频,用户设置存储在本地。支持多种语言,包括俄语和英语。

    Ushki-Radio 是现代互联网广播播放器的一个很好的例子:开放、轻量级、可扩展并且主要以听众为中心。该项目根据 MIT 许可证分发,非常适合个人使用,也可以作为您自己的音频应用实验的基础。

    GitHub:
    https://github.com/demensdeum/Ushki-Radio

    覆盖者

    Coverseer – 使用法学硕士的智能过程观察员

    Coverseer是一个Python CLI工具,用于智能监控和自动重启进程。与经典的看门狗解决方案不同,它使用 LLM 模型分析应用程序的文本输出,并根据上下文(而不仅仅是退出代码)做出决策。

    该项目是开源的,可在 GitHub 上获取:
    https://github.com/demensdeum/coverseer

    什么是 Coverser

    Coverer启动指定的进程,持续监控其stdout和stderr,将最新的输出块提供给本地LLM(通过Ollama),并确定进程是否处于正确的运行状态。

    如果模型检测到错误、冻结或不正确的行为,Covererer 会自动终止该过程并再次启动。

    主要功能

    • 输出的上下文分析 – 不检查退出代码,而是使用 LLM 进行日志分析
    • 自动重新启动 – 当检测到问题或异常终止时重新启动进程
    • 使用本地模型 – 使用 Ollama,无需将数据传输到外部服务
    • 详细记录 – 记录所有操作和决策以供后续诊断
    • 独立执行 – 可以打包成单个可执行文件(例如 .exe)

    它是如何工作的

    1. Coverseer 运行通过 CLI 传递的命令
    2. 收集并缓冲进程的文本输出
    3. 将最后几行发送到 LLM 模型
    4. 获取进程状态的语义评估
    5. 如有必要,终止并重新启动该进程

    这种方法使您能够识别标准监控工具无法检测到的问题。

    要求

    • Python 3.12 或更高版本
    • Ollama 已安装并正在运行
    • 已加载模型gemma3:4b-it-qat
    • Python 依赖项:请求ollama-call

    使用示例

    <代码>
    python covereer.py“这里是你的命令”

    例如,观察 Ollama 模型加载:

    <代码>
    python coverseer.py “ollama pull gemma3:4b-it-qat”

    Coverer 将分析命令输出并自动响应故障或错误。

    实际应用

    Coverer 在标准监管机制不足的场景中特别有用:

    • CI/CD 管道和自动构建
    • 后台服务和代理
    • 实验性或不稳定的过程
    • 具有大量文本日志的工具
    • 自我修复非常重要的开发环境

    为什么法学硕士方法更有效

    经典的监控系统对症状做出反应。覆盖者分析行为。即使在流程正式继续运行的情况下,LLM 模型也能够识别错误、警告、重复失败和逻辑死胡同。

    这使得监控更加准确并减少误报的数量。

    结论

    Coverer 是 LLM 在 DevOps 和自动化任务中实际应用的一个明显例子。它扩展了对过程监控的传统理解,并提供了更智能、基于上下文的方法。

    该项目对于那些正在尝试人工智能工具并寻找在不使基础设施复杂化的情况下提高系统稳定性的方法的开发人员特别感兴趣。

    火焰钢:火星矿工

    《Flame Steel: Mars Miners》是一款战术策略游戏,节奏不寻常,强调决策而不是反应。游戏发生在火星上,玩家面对有限的信息和来自对手的持续压力,争夺资源和领土的控制权。

    游戏玩法基于构成探险基础设施的枢纽站的建设。节点可让您提取资源、扩大影响范围并建立后勤。每个位置都很重要:一个错误可能会打开敌人通往关键区域的道路或剥夺你的战略优势。

    比赛节奏刻意控制且激烈。它介于国际象棋、围棋和海战之间:定位、预测对手的行动以及应对不确定性的能力在这里很重要。部分地图和敌人的意图仍然是隐藏的,因此成功不仅取决于计算,还取决于对局势的解读。

    《火焰钢:火星矿工》支持在线游戏,这使得每款游戏都独一无二——策略不断发展,元数据正在形成。该游戏正处于开发的早期阶段,这就是它的优势:玩家有机会成为第一个进入新的非标准项目、影响其开发并发现不复制该类型常见模板的机制的人。

    如果您对具有深度、实验性设计和强调思考的战术游戏感兴趣,那么《Flame Steel:火星矿工》现在就值得一试。

    游戏规则

    * 比赛场地由多个单元格组成,玩家将其物品一一放置在其上。每回合玩家可以执行一个建造动作。

    * 只允许建造两种类型的物体:枢纽站和矿井。任何构造都只能在垂直或水平位于现有玩家节点旁边的一个空闲单元上进行。不允许对角放置。

    * 枢纽站构成领土控制的基础并作为扩展点。地雷按照同样的规则放置,但算作资源对象,直接影响队伍的最终结果。

    * 如果玩家在垂直或水平方向上建立了一条连续的节点站线,那么这条线就会自动变成武器。该武器可以攻击敌人并摧毁其基础设施。

    * 要开枪,玩家选择一个属于他的枪的单元格并指向场上的任何敌方节点站。选定的敌方节点站被摧毁并从比赛场地中移除。地雷不能被直接攻击——只能通过破坏提供访问地雷的节点来攻击。

    * 比赛持续到规定的比赛结束。获胜者是此时比赛场上拥有最多资源矿的玩家。在平等的情况下,决定因素可能是领土控制或游戏模式决定的附加条件。

    https://mediumdemens.vps.webdock.cloud/mars-miners

    反重力

    几天后,在 Antigravity 的帮助下,我将 Masonry-AR 后端从 PHP + MySQL 转移到 Node.js + MongoDB + Redis -> Docker。 AI 的能力确实令人惊叹,我记得 2022 年我通过 ChatGPT 在shadertoy.com 上编写了最简单的着色器,看起来这个玩具无法做任何更高的事情。
    https://www.shadertoy.com/view/cs2SWm

    四年后,我看到了如何在大约 10 个提示中,毫不费力地将我的项目从一个后台平台转移到另一个后台平台,并添加了容器化。
    https://mediumdemens.vps.webdock.cloud/masonry-ar/

    酷,真的酷。

    包板

    KabanBoard 是一个开源 Web 应用程序,用于以看板格式管理任务。该项目专注于简单、易于理解的架构以及针对团队或个人开发人员的特定任务进行修改的可能性。

    该解决方案适用于小型项目、内部团队流程,或作为您自己产品的基础,而无需与第三方 SaaS 服务绑定。

    项目存储库可在 GitHub 上找到:
    https://github.com/demensdeum/KabanBoard

    主要功能

    KabanBoard 实现了一组用于使用看板的基本且实用的功能。

    • 为不同的项目创建多个看板
    • 包含任务状态的列结构
    • 能够编辑和删除的任务卡
    • 在列之间移动任务(拖放)
    • 卡片的颜色编码
    • 深色界面主题

    该功能不会超载,并且专注于日常工作任务。

    使用的技术

    该项目建立在一个通用且易于理解的堆栈上。

    • 前端:Vue 3、Vite
    • 后端: Node.js、Express
    • 数据存储:MongoDB

    客户端和服务器部分是分离的,这简化了项目的支持和进一步开发。

    项目部署

    要在本地运行,您将需要一个标准环境。

    • Node.js
    • MongoDB(本地或通过云)

    项目可以通过npm正常模式启动,也可以使用Docker启动,方便在测试或内部环境中快速部署。

    实际应用

    KabanBoard可用于不同的场景。

    • 内部任务管理工具
    • 定制看板解决方案的基础
    • SPA架构研究培训项目
    • 宠物项目或作品集的起点

    结论

    KabanBoard 是使用看板的简洁实用的解决方案。该项目并不打算取代大型企业系统,而是非常适合小型团队、个人使用和针对特定任务的进一步开发。

    戈菲斯

    Gofis 是一个轻量级的命令行工具,用于快速搜索文件系统中的文件。
    它是用 Go 编写的,大量使用并行性(goroutines),这使得它特别高效
    处理大型目录和项目时。

    该项目可在 GitHub 上获取:
    https://github.com/demensdeum/gofis

    🧠Gofis 是什么

    Gofis 是一个 CLI 实用程序,用于按名称、扩展名或正则表达式搜索文件。
    与 find 等经典工具不同,gofis 的设计初衷是
    重点是速度、可读输出和并行目录处理。

    该项目在MIT许可下分发,可以免费使用
    用于个人和商业目的。

    ⚙️ 主要功能

    • 使用 goroutine 并行目录遍历
    • 按文件名和正则表达式搜索
    • 按扩展名过滤
    • 忽略繁重的目录(.git、node_modules、vendor)
    • 人类可读的文件大小输出
    • 最小的依赖性和快速构建

    🚀安装

    需要安装 Go 才能工作。

    git clone https://github.com/demensdeum/gofis
    cd gofis
    go build -o gofis main.go
    

    构建后,二进制文件可以直接使用。

    发布页面上还有适用于现代 Windows 版本的独立版本:
    https://github.com/demensdeum/gofis/releases/

    🔍使用示例

    按名称搜索文件:

    ./gofis -n "config" -e ".yaml" -p ./src
    

    快速定位搜索:

    ./gofis "main" "./projects" 50
    

    使用正则表达式搜索:

    ./gofis "^.*\.ini$" "/"
    

    🧩 它是如何工作的

    Gofis 基于 Go 的竞争模型:

    • 每个目录都在单独的 goroutine 中处理
    • 使用信号量限制活动任务的数量
    • 频道用于传输搜索结果

    这种方法可以有效利用 CPU 资源
    并显着加快大型文件树的搜索速度。

    👨‍💻Gofis适合谁?

    • 使用大型存储库的开发人员
    • DevOps 和系统管理员
    • 需要从终端快速搜索的用户
    • 对于那些学习 Go 中并发的实际用途的人

    📌结论

    Gofis 是一个简单但有效的工具,只做一件事,而且做得很好。
    如果您经常在大型项目中搜索文件并且看重速度,
    这个 CLI 工具绝对值得一看。

    乌拉马卡尔

    如果您使用 Ollama 并且不想每次都编写自己的 API 包装器,
    ollama_call 项目显着简化了工作。

    这是一个小型 Python 库,允许您使用一个函数向本地 LLM 发送请求
    并立即收到响应,包括 JSON 格式。

    安装

    pip install ollama-call
    

    为什么需要它

    • 使用模型的最少代码;
    • 结构化 JSON 响应以供进一步处理;
    • 方便快速制作原型和 MVP;
    • 如有需要,支持流式输出。

    使用示例

    from ollama_call import ollama_call
    
    response = ollama_call(
        user_prompt="Hello, how are you?",
        format="json",
        model="gemma3:12b"
    )
    
    print(response)
    

    当它特别有用时

    • 您在 Ollama 之上编写脚本或服务;
    • 需要可预测的响应格式;
    • 不想连接重型框架。

    总计

    ollama_call 是一个轻量级且清晰的包装器,用于使用 Python 中的 Ollama。
    如果简单性和快速结果很重要,那么这是一个不错的选择。

    GitHub
    https://github.com/demensdeum/ollama_call

    SFAP:现代数据采集和处理的模块化框架

    在自动化和人工智能积极发展的背景下,有效收集、
    清理和转换数据变得至关重要。大多数解决方案只是关闭
    这个过程的各个阶段,需要复杂的集成和支持。

    SFAP(Seek·Filter·Adapt·Publish)是Python的一个开源项目,
    它提供了一种整体且可扩展的方法来处理数据生命周期各个阶段的数据:
    从寻找来源到发布最终结果。

    什么是 SFAP

    SFAP 是一个围绕数据处理管道的清晰概念构建的异步框架。
    每个阶段在逻辑上都是独立的,并且可以独立扩展或替换。

    该项目基于责任链架构模式,它提供:

    • 管道配置灵活性;
    • 各个阶段的简单测试;
    • 高负载的可扩展性;
    • 组件之间的职责清晰分离。

    管道的主要阶段

    Seek – 数据搜索

    在此阶段,发现数据源:网页、API、文件存储
    或其他信息流。 SFAP 可以轻松连接新来源而无需更改
    系统的其余部分。

    Filter – 过滤

    过滤旨在消除噪音:不相关的内容、重复内容、技术元素
    和低质量的数据。这对于后续处理步骤至关重要。

    Adapt – 适配和处理

    适应阶段负责数据转换:标准化、结构化、
    语义处理以及与人工智能模型(包括生成模型)的集成。

    发布 – 发布

    最后阶段,数据以目标格式发布:数据库、API、文件、外部服务
    或内容平台。 SFAP 不限制结果的交付方式。

    该项目的主要特点

    • 基于asyncio的异步架构
    • 模块化和可扩展性
    • 支持复杂的处理管道
    • 准备好与 AI/LLM 解决方案集成
    • 适合高负载系统

    实际用例

    • 新闻来源的汇总和分析
    • 准备机器学习数据集
    • 自动化内容管道
    • 清理和标准化大型数据流
    • 整合来自异构源的数据

    SFAP 入门

    您需要开始的是:

    1. 克隆项目存储库;
    2. 安装 Python 依赖项;
    3. 定义您自己的管道步骤;
    4. 启动异步数据处理进程。

    该项目很容易适应特定的业务任务,并且可以随着系统的增长而增长,
    而不变成一个整体。

    结论

    SFAP 不仅仅是一个解析器或数据收集器,而且是一个成熟的构建框架
    现代数据管道系统。适合关注的开发者和团队
    可扩展、架构简洁且数据就绪。
    项目源代码可在 GitHub 上获取:
    https://github.com/demensdeum/SFAP

    Flut数据流

    一个 Flutter 应用程序,可将任何文件转换为一系列机器可读代码(QR 和 DataMatrix),以便在设备之间进行高速数据流。

    特点
    * 双重编码:将每个数据块同时表示为 QR 码和 DataMatrix 码。
    *高速流媒体:支持自动切换间隔高达330ms。
    * 智能分块:自动将文件分割成自定义块(默认值:512 字节)。
    * 详细扫描器:实时读取ASCII码以进行调试和即时反馈。
    * 自动恢复:立即恢复文件并将其保存到您的下载目录。
    * 系统集成:完成后使用默认系统应用程序自动打开保存的文件。

    https://github.com/demensdeum/FlutDataStream

    为什么我无法修复该错误?

    您花费数小时编写代码,进行假设,调整条件,但错误仍然重现。听起来很熟悉吗?这种沮丧的状态通常被称为“幽灵狩猎”。该程序似乎过着自己的生活,忽略您的更正。

    造成这种情况的最常见且最烦人的原因之一是在应用程序中完全错误的位置寻找错误。

    “虚假症状”的陷阱

    当我们看到错误时,我们的注意力就会被吸引到它“出问题”的地方。但在复杂的系统中,发生错误(崩溃或不正确的值)只是一长串事件的结束。当你试图修复结局时,你是在对抗症状,而不是疾病。

    这就是流程图概念的用武之地。

    它在现实中是如何运作的

    当然,没必要每次都直接在纸上画(画)出流程图,但将其放在脑子里或手边作为架构指南很重要。流程图允许您将应用程序的操作可视化为结果树。

    在不理解这个结构的情况下,开发者常常是在黑暗中摸索。想象一下这种情况:您在一个条件分支中编辑逻辑,而应用程序(由于一组特定参数)转到您甚至没有想到的完全不同的分支。

    <块引用>
    结果:您花费数小时对算法的一个部分进行“完美”代码修复,当然,这对解决算法实际失败的另一部分的问题没有任何作用。

    <小时/>

    击败错误的算法

    要停止敲打紧闭的门,您需要改变诊断方法:

    • 在结果树中查找状态:在编写代码之前,您需要准确确定应用程序所采取的路径。逻辑在什么时候出现了错误?哪个具体状态(状态)导致了该问题?
    • 复制成功率为 80%:这通常由测试人员和自动化测试完成。如果bug“浮动”,则开发参与过程中共同寻找条件。
    • 使用尽可能多的信息:日志、操作系统版本、设备参数、连接类型(Wi-Fi/5G)甚至特定的电信运营商对于本地化都很重要。

    错误时刻的“照片”

    理想情况下,要修复它,您需要在重现错误时获取应用程序的完整状态。交互日志也非常重要:它们不仅显示最终点,还显示整个用户路径(失败之前执行了哪些操作)。这有助于理解如何再次重新创建类似的状态。

    未来提示:如果您遇到复杂的情况,请在这部分代码中添加扩展的调试日志记录信息,以防这种情况再次发生。

    <小时/>

    人工智能时代“难以捉摸”的状态问题

    在使用LLM(大型语言模型)的现代系统中,经典决定论(“一个输入,一个输出”)经常被违反。您可以传递完全相同的输入数据,但会得到不同的结果。

    发生这种情况是由于现代生产系统的非决定论

    • GPU 并行性:GPU 浮点运算并不总是关联的。由于线程并行执行,数字相加的顺序可能会略有变化,这可能会影响结果。
    • GPU 温度和限制:执行速度和负载分布可能取决于硬件的物理状态。在巨大的模型中,这些微观差异会累积,并可能导致在输出时选择不同的标记。
    • 动态批处理:在云端,您的请求会与其他请求合并。不同的批量大小会改变内核中的计算数学。

    在这样的条件下,再现“同样的状态”几乎是不可能的。只有统计测试方法才能拯救您。

    <小时/>

    当逻辑失败时:内存问题

    如果您使用“不安全”语言(CC++),该错误可能会因内存损坏而发生。

    这些是最严重的情况:一个模块中的错误可能会“覆盖”另一个模块中的数据。这会导致完全无法解释的孤立故障,无法使用正常的应用程序逻辑进行追踪。

    如何在架构层面保护自己?

    为了避免这种“神秘”的错误,您应该使用现代方法:

    • 多线程编程模式:清晰的同步消除了竞争条件。
    • 线程安全语言:编译时保证内存安全的工具:
      • Rust:所有权系统消除了内存错误。
      • Swift 6 并发:强大的数据隔离检查。
      • Erlang:通过参与者模型完成进程隔离。

    摘要

    修复错误并不是要编写新代码,而是要了解旧代码是如何工作的。请记住:您可能会浪费时间编辑管理层根本不接触的分支。记录系统状态,考虑AI非确定性因素,选择安全工具。

    费拉尔

    Ferral 是一种高级、多范式编程语言,专为从大型语言模型 (LLM) 生成代码而设计。虽然传统语言在设计时考虑了人体工程学,但 Ferral 针对大型语言模型 (LLM) 的推理、标记化和推理逻辑进行了优化。

    该名称由两个 R 拼写而成,表明针对人工智能生成代码的不可预测性的一种“重新想象”方法。

    https://github.com/demensdeum/ferral