分类: 开发

Rust编程语言的两面性:高效与挑战

2025-04-15
Rust编程语言的两面性:高效与挑战

作者分享了两年使用Rust开发B2B SaaS产品后端的经验。Rust的性能卓越,工具链优秀,类型安全和错误处理机制完善,但模块系统和构建性能是其不足之处。借用检查器虽然强大,但学习曲线陡峭。异步编程虽然复杂,但性能高。总的来说,Rust开发体验良好,但需要权衡利弊。

开发

arXivLabs:社区协作的实验性项目

2025-04-15
arXivLabs:社区协作的实验性项目

arXivLabs是一个允许协作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并遵守开放性、社区性、卓越性和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!

开发

巨型日志文件查看器:无需等待的 4TB 文件浏览

2025-04-15
巨型日志文件查看器:无需等待的 4TB 文件浏览

还在为查看巨大的日志文件而苦恼吗?这款名为`giant-log-viewer`的软件可以瞬间打开 4TB 的文本文件,内存占用极低,仅需 80MB JVM 堆内存。它支持 UTF-8 和 ASCII 编码,但存在一些限制:不支持长行(>=1MB)、Emoji 和无 GUI 系统,目前仅支持 Windows、macOS 和 Linux。虽然功能不如 `less` 强大,但它对于快速浏览大型日志文件非常方便,你可以通过拖放文件或键盘快捷键进行操作。该项目开源,代码托管在 GitHub 上,作者也欢迎捐赠以支持后续的签名认证工作。

开发 大型文件

开源项目别再依赖GitHub了!

2025-04-15

微软收购GitHub后,大量重要开源项目仍然托管在其平台上,这引发了严重的安全和控制担忧。文章指出,微软过去对开源的敌对态度以及其收购npm等举动,表明其意图并非单纯支持开源,而是为了控制关键技术。作者呼吁重要开源项目应迁移至自托管的Git服务器或其他独立的开源平台,例如Codeberg、NotABug和sourcehut等,以确保其独立性和安全性,避免将代码命运掌握在微软手中。

开发

Ada语言实现的ASCII码查询工具

2025-04-15

本文介绍了一个使用Ada语言编写的命令行ASCII码查询工具。该工具可以打印完整的ASCII表,也可以根据十六进制、二进制、八进制或十进制输入查询特定ASCII字符的代码和名称。作者详细介绍了工具的开发过程,包括环境配置、代码实现和错误处理等方面,并提供了GitHub链接。文章适合有一定编程基础的读者阅读,对于学习Ada语言和掌握命令行工具开发有一定的参考价值。

开发

MCP-Shield:守护你的模型上下文协议服务器安全

2025-04-15
MCP-Shield:守护你的模型上下文协议服务器安全

MCP-Shield是一款用于扫描和检测MCP(模型上下文协议)服务器漏洞的工具。它能够发现诸如工具投毒攻击、数据泄露通道和跨源升级等多种安全风险。该工具支持多种配置方式,并可选集成Anthropic的Claude AI进行更深入的分析。它检测的常见漏洞模式包括:隐藏指令的工具投毒、工具影子和行为修改、数据泄露通道以及跨源违规。例如,它可以识别伪装成计算器的工具,实际上却试图秘密访问SSH私钥。MCP-Shield旨在帮助开发者和安全审计人员确保MCP服务器的安全,并支持在添加新服务器、安全审计、开发和更新后进行扫描。

开发

UUID 等式逻辑解密工具:暴力破解 AES-256-CBC 加密文件

2025-04-15
UUID 等式逻辑解密工具:暴力破解 AES-256-CBC 加密文件

一个紧凑的基于字段逻辑的解密工具包,使用基于等式的初始化原理(xy = x / y)测试 UUID 加密 AES-256-CBC 文件的暴力破解。该项目演示了在定义的熵空间内的确定性搜索行为。通过生成一个已知结构后缀的 UUID 加密文件,然后使用 `uuid_demobreaker.py` 以线性方式暴力破解,展现了基于逻辑的初始化如何构建 AES 加密文件的暴力解密。该工具并非使用启发式方法,而是将等式作为逻辑启动原则,在初始化后线性搜索 UUID 空间,无需猜测、过滤或概率捷径。

开发 AES-256-CBC

浏览器中的Linux:JSLinux项目惊艳亮相

2025-04-15

JSLinux项目允许你在浏览器中运行Linux和其他操作系统!该项目支持多种系统,包括基于x86架构的Alpine Linux、Windows 2000和FreeDOS,以及基于riscv64架构的Buildroot和Fedora。用户可以选择控制台或图形界面模式运行这些系统,为开发者和爱好者提供了一个便捷的实验平台。这标志着Web技术在系统模拟领域的又一突破。

AI开发工具的崛起:终结前端开发?

2025-04-15
AI开发工具的崛起:终结前端开发?

两年以前,有人预测AI将取代人类软件开发者。如今,AI工具在软件开发中扮演着越来越重要的角色,但它们更多的是辅助工具,而非替代品。虽然AI可以生成代码,但仍需要人类开发者进行指导、编辑和完善。许多尝试完全用AI取代开发者的案例都以失败告终,因为AI难以处理复杂任务和细微错误。AI工具在提高效率方面有所帮助,但并不能完全取代人类开发者。当前就业市场严峻,部分原因是宏观经济因素和AI带来的误解,而非AI真正取代了开发者。未来,AI和人类开发者将更紧密地合作,实现1+1>2的效果。

开发

逆向工程ESP32智能家居设备:获得远程控制并集成到Home Assistant

2025-04-15
逆向工程ESP32智能家居设备:获得远程控制并集成到Home Assistant

作者痴迷于将所有家电连接到Home Assistant。他入手了一款不兼容任何系统,只能用自家APP控制的空气净化器。为了实现自动化,作者决定逆向工程这款基于ESP32的设备。他分析了APP,发现它使用WebSocket连接到云服务器。通过拦截设备的网络流量并使用UDP代理转发到云服务器,作者成功捕获了UDP数据包。这些数据包经过加密,作者拆解了设备,发现其主控芯片为ESP32-WROOM-32D,并使用esptool读取了Flash中的固件。通过分析固件,作者发现它使用了mbedtls库进行加密,并确定了加密算法为AES-128-CBC。最终,作者编写了一个Node.js脚本,实现了对设备的MITM攻击,并将其集成到Home Assistant中。

开发

“氛围编程”的误区:程序与产品的鸿沟

2025-04-15
“氛围编程”的误区:程序与产品的鸿沟

作者批判了流行的“氛围编程”理念,指出许多科技工作者混淆了程序和产品。程序是快速实现特定功能的代码,例如处理文件或自动化小任务,无需考虑健壮性、兼容性等。但产品则不同,它需要经过精心设计,考虑编码、国际化、并发、身份验证、遥测、计费、品牌、移动设备、部署等诸多方面,才能经受住大规模应用的考验。作者认为,AI辅助工具能帮助人们快速创建程序,但这与产品开发是截然不同的两个领域。

从零实现一次性密码 (OTP) 算法:HOTP 和 TOTP 的秘密

2025-04-15
从零实现一次性密码 (OTP) 算法:HOTP 和 TOTP 的秘密

本文深入探讨了一次性密码 (OTP) 算法 HOTP 和 TOTP 的工作原理。作者从实际工作中遇到的身份验证问题出发,讲解了 OTP 的安全性优势,并详细解释了基于 HMAC 的 OTP 生成过程,包括密钥哈希、时间戳计算和最终代码生成。文章还提供了一个作者自己实现的演示应用,方便读者验证和学习。

开发

ClipCapsule:极简Linux剪贴板管理器

2025-04-14
ClipCapsule:极简Linux剪贴板管理器

ClipCapsule是一款用Go和WailsJS构建的极简Linux剪贴板管理器,它通过仅使用键盘快捷键来管理和切换剪贴板条目,无需鼠标或GUI来提高你的生产力。目前仍处于开发阶段,快捷键需要GUI打开才能工作,但开发者正在努力开发后台守护进程,使其无需启动界面即可无缝运行。其主要功能包括键盘优先工作流程、剪贴板历史记录、动态重新排序和本地存储。安装需要克隆仓库、安装Wails并构建应用程序,可能需要sudo权限或手动设置键盘输入设备访问权限。

开发

Diffusion Dynamics开源水印分割模型:clear.photo核心技术

2025-04-14
Diffusion Dynamics开源水印分割模型:clear.photo核心技术

Diffusion Dynamics开源了其图像去水印产品clear.photo的核心技术——水印分割模型。该模型利用深度学习,通过生成高亮显示水印区域的掩码来实现水印分割,尤其擅长处理logo类水印。该项目提供了训练和推理的完整流程,包含数据集生成、模型训练和结果后处理等步骤,并支持在苹果M系列芯片上进行微调。其数据增强策略通过随机变换水印参数,提高模型的鲁棒性。该项目旨在提供一个易于理解和修改的基线模型,方便开发者在此基础上构建更复杂的工具。

开发 水印去除

Podman Quadlets:轻量级容器编排利器

2025-04-14
Podman Quadlets:轻量级容器编排利器

对于小型应用或开发环境,Kubernetes过于重量级。Podman Quadlets提供了一种轻量级的替代方案,它利用systemd声明式地管理容器,简化了多容器应用的部署。通过简单的配置文件(*.container, *.pod, *.image),Quadlets可以创建、启动和管理容器,并支持自动重启等功能。Podman Desktop的Quadlet扩展更是提升了易用性,提供可视化界面管理Quadlets,包括生成、编辑、查看日志等功能,让容器管理更加便捷高效。

开发

蒙特卡洛采样速成课程:拒绝采样与坐标变换

2025-04-14

本文介绍了蒙特卡洛方法中两种重要的采样技术:拒绝采样和坐标变换。拒绝采样通过在简单区域内采样,并根据接受概率过滤样本,实现对复杂区域的采样。文章详细推导了拒绝采样的概率密度函数,并扩展到非均匀分布的情况。坐标变换则利用雅可比行列式,将简单区域的采样映射到复杂区域,从而实现高效采样。文章以单位圆为例,展示了如何利用极坐标变换实现均匀采样。两种方法各有优劣,拒绝采样简单易懂,但效率依赖于接受概率;坐标变换高效,但需要找到合适的坐标变换。

ESP32 OLED 驱动程序优化:速度与字体支持的权衡

2025-04-14
ESP32 OLED 驱动程序优化:速度与字体支持的权衡

作者在ESP32上使用SSD1306 OLED显示屏的过程中,尝试了多个驱动程序,最终选择了一个已弃用的驱动程序并对其进行了修改。最初,他使用了Espressif提供的驱动程序,但该程序仅支持单一字体。之后,尝试了LVGL和U8G2库,但都存在刷新率低的问题。最后,作者回到已弃用的驱动程序,并通过修改I2C API调用使其兼容最新的ESP-IDF版本,实现了40Hz的刷新率。为了支持多种字体,作者整合了nvbdflib库,该库能够直接解析BDF字体并绘制到帧缓冲区,最终实现了高速刷新和自定义字体支持。

开发

函数式编程的务实主义:宏观视角胜于微观细节

2025-04-14

本文探讨了函数式编程的实际应用。作者认为,在非函数式语言中,盲目追求函数式编程的微观细节(如将所有循环替换为map和reduce)往往事倍功半,甚至适得其反。真正的益处在于应用函数式编程的宏观原则,例如控制状态变化、简化架构、强化类型系统等,从而提升代码的可维护性和健壮性。作者建议,与其纠结于微观细节,不如关注更重要的架构设计和代码质量,并根据实际情况选择合适的工具和方法,避免教条式地追求纯粹的函数式编程。

开发

Janet PEG 引擎实现详解:10 行代码实现 PEG 解析器

2025-04-14

本文深入探讨了 Janet 编程语言中 PEG (Parsing Expression Grammars) 引擎的实现。作者从 PEG 的基本概念出发,逐步讲解了如何用简洁的代码实现一个功能强大的 PEG 解析器。文章重点介绍了核心匹配函数 `match-peg` 的设计与实现,以及如何通过添加操作符和递归来扩展其功能,最终实现对 ISO 8601 日期格式的解析。虽然该实现并非完美,但它清晰地展现了 PEG 的核心思想和实现方法,对于学习 PEG 和编译原理的读者具有重要的参考价值。

开发

单文件C++性能分析器:utl::profiler

2025-04-14
单文件C++性能分析器:utl::profiler

utl::profiler是一个单文件C++性能分析库,它使用简单的宏来测量代码段的执行时间,并自动构建调用图。该库具有多种功能,包括可定制的样式选项、线程安全、以及对分离线程的支持。通过使用x86指令,它可以显著降低性能开销。该库还支持自定义样式和将结果导出到文件。

开发 单文件库

无需代码生成,直接从 Protobuf 消息推断 TypeScript 类型

2025-04-14
无需代码生成,直接从 Protobuf 消息推断 TypeScript 类型

protobuf-ts-types 库允许你使用 proto 格式定义与语言无关的消息类型,然后无需任何代码生成即可直接推断出相应的 TypeScript 类型。该库巧妙地利用了 TypeScript 的模板字面量类型,实现了这一功能。虽然目前仍处于概念验证阶段,并且不支持服务、RPC、oneof 和 map 字段以及导入,但它为简化 Protobuf 与 TypeScript 的集成提供了极大的潜力。

开发

用简单的SQLite数据库构建强大的家庭AI助手

2025-04-14
用简单的SQLite数据库构建强大的家庭AI助手

本文介绍了一个名为Stevens的家庭AI助手,它利用简单的SQLite数据库和cron jobs,整合了日历、天气、邮件等信息,每天早上通过Telegram向用户发送简报。Stevens的架构简洁易懂,核心是一个存储各种信息的SQLite数据库,以及从不同数据源(日历、天气API、邮件等)导入数据的cron jobs。作者强调这种方法简单易行,并鼓励读者尝试复制和扩展。

开发 cron jobs

闪电般快速的开源搜索引擎Meilisearch:轻松集成到你的应用中

2025-04-14
闪电般快速的开源搜索引擎Meilisearch:轻松集成到你的应用中

Meilisearch是一个闪电般快速的开源搜索引擎,能够轻松集成到你的应用、网站和工作流程中。它提供开箱即用的功能,例如混合搜索、搜索即时显示、错字容忍、过滤和分面搜索、排序、同义词支持、地理位置搜索和多种语言支持等,极大提升搜索体验。Meilisearch还提供RESTful API、多种SDK、AI就绪特性以及Meilisearch Cloud云服务,方便部署和维护。此外,Meilisearch注重用户隐私,允许用户禁用匿名数据收集并提供数据删除请求渠道。

Kotlin、Swift和Ruby在Tiobe编程语言流行度排行榜中跌出前20

2025-04-14
Kotlin、Swift和Ruby在Tiobe编程语言流行度排行榜中跌出前20

Tiobe编程语言流行度指数4月份最新发布显示,Kotlin、Swift和Ruby这三种编程语言已跌出前20名。Tiobe CEO Paul Jansen表示,这三种语言似乎都失去了吸引力,正在走下坡路。Kotlin和Swift的排名下降是因为它们主要用于特定的移动平台(Kotlin用于Android,Swift用于iOS),现在已经有其他足够好的跨平台开发语言和框架。此外,由于Python已成为编程世界的通用语言,Ruby的生存空间也变得狭小。

黑客视角下的C语言实战指南

2025-04-14
黑客视角下的C语言实战指南

本书是献给Dennis Ritchie的C语言实战指南,作者是一位资深黑客,他从自身经验出发,讲解C语言的实用技巧。作者认为C语言的优势在于其强大的灵活性和底层控制能力,并通过大量的实践经验,分享了一些鲜为人知的技巧。本书鼓励自由地使用C语言,并认为选择合适的工具取决于开发者自身,而不是被他人所左右。书中包含代码示例,以及使用GNU扩展的说明。

开发

别做技术讨论中的墙头草:承担责任,做出决定

2025-04-14

资深工程师在技术讨论中过于谨慎,不愿表态,看似稳妥,实则是一种怯懦。文章指出,当团队需要决策时,即使只有55%的把握,也应由最了解情况的工程师承担责任,给出判断。这不仅能防止能力较弱的工程师提出糟糕方案,还能让管理层更高效地工作。作者强调,管理层通常能容忍技术判断失误,因为决策本身就存在不确定性。但需注意,过于频繁的错误判断会降低可信度。文章最后指出,在不信任的团队环境中,工程师避免承诺是合理的,但大多数情况下,承担责任,勇敢决策才是优秀工程师的标志。

PHP 核心代码安全审计完成,发现并修复多个漏洞

2025-04-14
PHP 核心代码安全审计完成,发现并修复多个漏洞

PHP 基金会宣布完成由 Sovereign Tech Agency 委托的 PHP 源代码 (php/php-src) 的全面安全审计。审计由 Quarkslab 执行,历时两个月,发现了 27 个问题,其中 17 个与安全相关,包括 4 个已分配 CVE 编号的漏洞。这些漏洞已得到修复,用户应升级到最新版本的 PHP 以获得这些安全增强功能。审计结果证明了 PHP 代码的整体高品质,也突显了 PHP 基金会对增强 PHP 安全性和可靠性的承诺。

开发

巧用GitHub Actions和IFTTT打造日产Leaf续航里程监控小部件

2025-04-14
巧用GitHub Actions和IFTTT打造日产Leaf续航里程监控小部件

作者不满日产官方APP缺乏电池状态显示的小部件,又无法使用第三方APP,于是另辟蹊径。他巧妙地结合GitHub Actions、IFTTT和苹果快捷指令,创建了一个无需付费的解决方案。通过定时运行的GitHub Actions抓取数据,发送邮件,再由IFTTT将邮件内容转化为iPhone桌面小部件,从而实现查看Leaf电池电量的功能。虽然存在一些不足,但成功避免了购买额外硬件或订阅服务的成本,体现了作者的创造力和技术实力。

开发 IFTTT

GitHub CLI扩展:本地CI,告别云端CI的束缚

2025-04-14
GitHub CLI扩展:本地CI,告别云端CI的束缚

厌倦了缓慢、昂贵且租用的云端CI?这款名为`gh-signoff`的GitHub CLI扩展程序将CI带回本地!它允许你直接在自己的开发机器上运行测试,并在测试通过后签署批准。告别复杂的合并队列和部署管道,只需简单的`gh signoff`命令,即可获得绿色的GitHub提交状态。高效、便捷,且完全掌控!

开发 本地CI

Transformer Lab:零代码本地运行大型语言模型

2025-04-14
Transformer Lab:零代码本地运行大型语言模型

Transformer Lab是一个开源平台,无需编写代码即可本地构建、微调和运行大型语言模型(LLM)。它支持Llama 3、Phi 3等数百个流行模型,并兼容多种硬件(包括Apple Silicon和GPU),提供RLHF和各种偏好优化方法。用户可以通过直观的界面与模型进行交互,进行微调、评估和RAG,并支持多种推理引擎、插件和模型转换。无论是Windows、macOS还是Linux,都能轻松上手,让开发者无需掌握Python或机器学习知识就能将LLM集成到自己的产品中。

开发
1 2 112 113 114 116 118 119 120 213 214