分类: 开发

PWCT2:无需编码的视觉编程语言

2025-01-03
PWCT2:无需编码的视觉编程语言

PWCT2是一款用Ring语言编写的第二代可视化编程语言,旨在提供轻松愉悦的可视化编程和交互式可视化体验。它支持导入和导出Ring代码,可在Windows、Linux和macOS系统上运行,甚至已上架Steam平台。PWCT2拥有丰富的功能,涵盖Web开发、2D游戏开发等多个领域,并提供大量的教程视频和文档支持。

开发 Ring语言 PWCT2

Ruby 社区巨星 Noah Gibbs 的缅怀

2025-01-03

Ruby 社区痛失一位巨人——Noah Gibbs。本文作者深情回忆了与 Noah 的共事经历,从最初的线上交流到后来的并肩作战。Noah 不仅是一位技术精湛的工程师,更是位充满热情、乐于助人、极具天赋的导师。他参与了 Scarpe 项目的创建,并为其贡献了大量的代码和设计理念。他的离世是社区的巨大损失,但他的精神将永远激励着我们,继续为开源事业贡献力量。

开发 缅怀

Waterloo大学学生开源简易机器学习库

2025-01-03
Waterloo大学学生开源简易机器学习库

Waterloo大学学生Kyoung Seo在GitLab上开源了一个名为`ksimple_ml`的简易机器学习库。该项目于2024年12月30日创建,包含26个提交,1个分支,0个标签。项目README文件表明这是一个简易的机器学习库,方便学习和使用。

开发

软件设计的基石:类型

2025-01-03
软件设计的基石:类型

软件设计并非仅仅是函数的堆砌,更在于高层次的设计。本文作者认为,软件设计最重要的元素是类型。类型定义了数据的结构和函数的接口,是理解和沟通软件设计的关键。即使在动态类型语言中,类型也以更隐含的形式存在。良好的类型设计能提高代码的可读性、可维护性和可靠性,并能帮助开发者更好地进行抽象和模块化设计。文章还探讨了静态类型和动态类型语言中类型的差异以及不同类型系统(如泛型编程和依赖类型)对软件设计的影响。

开发 编程范式

RSA密钥生成基准测试:一场与概率的较量

2025-01-03
RSA密钥生成基准测试:一场与概率的较量

RSA密钥生成看似简单,实则复杂。本文作者巧妙地运用数学方法,避免了传统统计方法在基准测试中遇到的噪声问题。通过预先生成具有代表性的候选数序列,并对不同实现进行比较,作者提供了一种更稳定、更可靠的基准测试方案。文章详细解释了RSA密钥生成的数学原理,并分享了用于生成平均候选数序列的脚本和数据,方便读者进行测试和对比。

CoinTracker招聘全栈产品工程师

2025-01-03
CoinTracker招聘全栈产品工程师

加密货币追踪平台CoinTracker正在招聘一名全栈产品工程师。这是一个令人兴奋的机会,可以加入一个快速发展的团队,并对加密货币领域的未来产生影响。职位要求具备全栈开发经验,熟悉各种编程语言和框架,并对区块链技术有一定了解。如果你对加密货币充满热情,并且渴望在充满挑战性的环境中工作,那么这就是你的理想职位。

开发 CoinTracker

反复迭代提示LLM能否写出更好的代码?

2025-01-03
反复迭代提示LLM能否写出更好的代码?

本文作者通过实验探讨了反复提示大型语言模型(LLM)“写出更好的代码”是否能提高代码质量。实验使用Claude 3.5 Sonnet,初始提示为一个简单的Python编程问题。通过多次迭代提示“写出更好的代码”,代码性能逐步提升,最终实现了100倍的加速。然而,作者也发现,简单的迭代提示会导致代码过度工程化,而精确的提示工程则能更有效地引导LLM生成更高效的代码。实验结果表明,LLM可以辅助代码优化,但仍需人工干预和专业知识来确保代码质量和效率。

开发

代码重写:魔法棒与迭代式改进

2025-01-03

本文探讨了代码重写的利弊。作者以Netscape的失败案例为例,指出重写并非总是最佳方案。与其进行大规模重写,不如保持理想主义,想象一个完美的解决方案(挥动魔法棒),然后逐步迭代改进现有代码。通过区分必要复杂性和偶然复杂性,确定改进方向,并持续反思“如果我能挥动魔法棒,我希望它是什么样子”,最终达到理想状态。

开发 迭代开发

Gource:用炫酷动画可视化你的代码库

2025-01-03
Gource:用炫酷动画可视化你的代码库

Gource是一款开源软件,它能将你的版本控制库历史以令人惊叹的动画形式展现出来。代码库的根目录位于中心,目录如同树枝,文件如同树叶,开发者则化身为在代码树上穿梭的动态角色,他们的贡献以动画轨迹展现。Gource使用OpenGL渲染,需要3D加速显卡才能运行。它支持多种版本控制系统,如Git、SVN、Mercurial等,并提供丰富的参数设置,自定义动画效果,让你轻松生成令人印象深刻的代码库可视化视频。

开发

用MediaPipe和Python操控你的Roku:无需遥控器,挥挥手就够了

2025-01-03
用MediaPipe和Python操控你的Roku:无需遥控器,挥挥手就够了

这个项目名为HandiRokuRemote,它使用MediaPipe和Python,通过手势控制你的Roku设备。该程序利用计算机摄像头实时追踪你的手势,并将它们转换成发送到Roku的命令。它支持自动发现Roku设备,并提供可自定义的设置,包括调试模式、自动启动和骨骼视图。目前该项目已支持多种手势,对应不同的Roku命令,例如导航和媒体控制。虽然存在距离限制,但未来有望扩展到其他智能电视或支持HDMI-CEC的设备。

开发 手势识别

Kuvasz-streamer:高性能PostgreSQL CDC工具

2025-01-03

Kuvasz-streamer是一个开源的变更数据捕获(CDC)项目,专为PostgreSQL数据库设计。它与PostgreSQL逻辑复制紧密集成,提供高性能、低延迟的复制功能。支持多种运行模式,包括声明式模式和交互式模式,并具备多种特性,例如轻量级、高性能(10K tps,延迟小于1秒)、自动化管理发布和复制槽位、灵活的表传播模型(克隆、历史和仅追加)等。其用例涵盖数据整合、数据库升级、微服务数据库整合、多租户数据库整合以及数据库性能优化等多个方面。

开发 CDC

在互联网上成为房主而非租客

2025-01-03
在互联网上成为房主而非租客

2025年的互联网已非2000年代的模样,巨头公司主导着网络生态。文章作者呼吁技术娴熟的个人建立自己的网络空间,而非依赖大型平台。作者建议拥有自己的域名和网站,避免将所有工作集中在一个网络上,并强调邮件列表的重要性。文章还指出,应积极参与其他社交平台,但不能将其仅仅视为链接农场,应注重与社区的互动。最终目标是拥有灵活、可控的数字资产,而非受制于平台规则。

开源软件捐赠宝藏:awesome-donations

2025-01-03
开源软件捐赠宝藏:awesome-donations

这个GitHub仓库awesome-donations汇集了大量自由/开源软件(FLOSS)项目的捐赠渠道。从Linux基金会、Mozilla基金会到众多知名项目如LibreOffice、GIMP、QEMU等,它提供了便捷的途径支持你喜爱的开源项目。无论你是通过PayPal、信用卡还是其他方式,都能轻松为开源社区贡献力量,让更多优秀的免费软件持续发展。

开发 FLOSS

Ruby JSON 性能优化:堆栈分配与内联函数的博弈

2025-01-02

本文是 Ruby JSON 优化系列的第四部分,作者通过一系列微基准测试和性能分析,深入探讨了如何优化 Ruby 的 JSON 序列化性能。文章重点关注了堆栈分配和内联函数的运用,通过将缓冲区从堆分配改为栈分配,以及巧妙地运用内联函数,最终提升了 JSON 序列化的速度,但同时也揭示了在追求微基准测试性能的同时,需要注意避免对实际应用性能的负面影响。

开发

程序员面试:一场代码魔法对决

2025-01-02

一位经验丰富的程序员Vidrun参加了一场不同寻常的面试。面试官Aisha,一位三年经验的工程师,不仅询问了二叉树平衡问题,还展开了一场基于Prolog和λ演算的代码魔法对决。Aisha逐步引导Vidrun构建一个Lisp解释器,最终Vidrun运用µKanren和独特的宏定义技巧,巧妙地解决了问题,并与Aisha在代码的艺术中达成了共鸣。这个故事融合了技术、魔法和人际互动,展现了程序员的智慧和创造力。

超越RAG:构建增强而非取代思考的知识管理系统

2025-01-02
超越RAG:构建增强而非取代思考的知识管理系统

本文探讨了Zettelgarden知识管理系统的设计理念,它旨在增强而非取代人类思考。作者回顾了从纸质卡片到数字笔记的演变过程,指出数字系统虽然方便搜索和链接,但也失去了纸质卡片带来的意外关联的益处。作者批判了当前AI辅助知识管理系统中过度依赖自动化和RAG(检索增强生成)模型的弊端,认为其难以处理海量信息且忽视了个人理解和知识加工的重要性。Zettelgarden则强调个人笔记的重要性,鼓励用户添加个人评论和见解,并通过独特的卡片结构促进知识间的关联。作者认为,未来的知识管理应是人机协作,计算机负责组织,而人类负责思考和理解。

开发

Go 语言大规模升级:150+ 服务的经验总结

2025-01-02
Go 语言大规模升级:150+ 服务的经验总结

本文作者分享了在 Lyft 公司将 150 多个 Go 服务从 1.17 升级到 1.20 的经验。文章强调了制定周全计划的重要性,并列出了升级步骤,包括阅读发行说明、检查工具、运行单元测试和代码检查等。作者指出,自动化是关键,并建议利用现有的构建、CI/CD 和部署流程。通过这些措施,Lyft 在 3-4 周内完成了升级,几乎没有生产问题。文章还讨论了一些可能遇到的问题,例如 linter 支持、排序算法的变化以及弃用函数的处理,并强调了回滚计划的重要性。

开发 Go 升级

极致精简:167字节的Hello World程序

2025-01-02
极致精简:167字节的Hello World程序

本文讲述了作者探索编写最小化Hello World程序的历程。起初,作者尝试使用Rust,但发现最小化二进制文件需要深入底层。最终,作者选择使用汇编语言,并通过精巧的技巧,例如去除调试符号和手动编写ELF文件头,将64位Linux系统下的Hello World程序大小压缩到令人惊叹的167字节!这篇文章深入探讨了链接过程中的文件膨胀问题,以及ELF文件格式的细节,对系统底层开发人员具有极高的参考价值。

编写优秀的软件教程指南

2025-01-02
编写优秀的软件教程指南

一篇博文总结了编写优秀软件教程的规则,强调避免专业术语、清晰地阐述目标、提供可复制粘贴的代码片段、保持代码可运行状态以及最小化依赖等关键点。文章以对比的方式展示了优秀教程和糟糕教程的区别,并提供了具体的改进建议,例如使用长命令行参数、分离用户自定义值和可复用逻辑,以及使用一致的、描述性的标题等。最终目标是创作对初学者友好的,易于理解和遵循的教程。

开发 软件教程

Notion:你的笔记、任务、Wiki 和数据库一体化工作区

2025-01-02
Notion:你的笔记、任务、Wiki 和数据库一体化工作区

Notion 是一款一体化工作区,将笔记、任务管理、Wiki 和数据库功能整合在一个平台上。它以其高度的灵活性和可定制性而闻名,允许用户创建个性化的工作流程和知识库。无论你是学生、自由职业者还是团队成员,Notion 都能帮助你更好地组织信息,提高工作效率。其强大的数据库功能更是让你可以轻松管理各种数据,从简单的待办事项到复杂的项目管理,Notion 都能胜任。

开发

基于ChatGPT的个性化AI日历7天试用

2025-01-02

作者开发了一款整合ChatGPT的个性化AI日历,招募20名用户进行为期7天的试用(至少3天)。该日历帮助用户提前计划任务,并在指定日期提供AI驱动的定制化建议,例如头脑风暴、提纲或应对障碍的策略。用户可通过“开始聊天”功能微调AI的回应。试用期间,每次聊天限制10条消息,每条消息100字以内。请注意网站链接需手动添加书签,Discord邀请链接单次有效。作者希望收集用户反馈,改进功能和UI。

开发 AI日历

Linux上下文切换内部机制:进程状态与内存

2025-01-02
Linux上下文切换内部机制:进程状态与内存

本文深入探讨了Linux内核如何表示进程及其状态,重点介绍了task_struct和mm_struct这两个关键数据结构。task_struct负责进程的执行状态,包括进程状态、CPU时间跟踪和调度信息;mm_struct则管理进程的内存状态,涵盖页表、内存段边界以及体系结构相关的内存状态。文章详细解释了这些结构的各个字段,并阐述了它们在上下文切换过程中的作用,为理解Linux内核的底层机制提供了深入的见解。

开发

Connet:无需公网IP的P2P反向代理

2025-01-02
Connet:无需公网IP的P2P反向代理

Connet是一个基于P2P的NAT穿透反向代理,受frp、rathole和ngrok启发。它允许你在没有公网IP的情况下,将本地服务暴露给互联网上的其他设备。与其他类似工具不同,Connet客户端同时运行在服务提供方(目标)和服务请求方(来源)两端,确保通信私密且高效。Connet目前处于alpha阶段,支持直接连接和中继服务器连接,并使用TLS加密所有通信。

开发 NAT穿透

Qt5 框架导致的诡异 Wi-Fi 延迟问题

2025-01-02

博主经历了长达 8 个月的 Wi-Fi 延迟困扰,游戏和视频通话延迟高达 2000ms 以上。更换网卡、重装系统都无效。最终发现罪魁祸首竟是 MediBang Paint Pro 这款绘图软件,因为它使用了 Qt5 (<5.14) 框架,该框架的 QNetworkAccessManager 会每 10 秒检查 Wi-Fi 接口变化,造成严重的延迟。解决方法是设置环境变量 QT_BEARER_POLL_TIMEOUT 为 -1。

开发 Wi-Fi 问题 Qt5

PostgreSQL 18即将支持UUIDv7:告别测试中的ID排序烦恼

2025-01-02

PostgreSQL即将在18版本中支持UUIDv7,这是一种改进的UUID生成方法。它不仅保留了UUIDv4的随机性优势,还通过利用时间戳和一个12位的亚毫秒计数器,保证了在同一数据库后端生成的UUID的单调递增性。这对于测试尤其有用,因为测试数据将自动按顺序排列,避免了手动排序的麻烦,提高了测试效率和可靠性。虽然单调性不保证跨数据库后端,但对于大多数测试场景来说已经足够。这项改进预计在2025年末的PostgreSQL 18版本中正式发布。

开发 UUIDv7

HtmlSlice:Ruby 的 HTML 片段生成器

2025-01-02
HtmlSlice:Ruby 的 HTML 片段生成器

HtmlSlice 是一个 Ruby gem,允许 Ruby 类动态生成可重用的 HTML 片段。它解决了现有 HTML 生成器的一些局限性,例如 Markaby 的实例作用域问题。HtmlSlice 支持各种 HTML 标签,包括空标签,并提供安全地转义 HTML 内容以防止 XSS 漏洞的功能。它轻量级且易于使用,可用于生成整个应用程序的 HTML 或仅生成部分 HTML。

开发 gem

Mill JVM构建工具:直接可执行的Assembly JARs

2025-01-02

Mill JVM构建工具生成的assembly JARs可以直接执行,无需`java -jar`命令。这得益于Mill在JAR文件头部添加了一个shell脚本,该脚本负责调用Java运行时环境。此脚本兼容Unix和Windows系统,实现了跨平台的可执行性。文章详细解释了其原理,即利用ZIP文件的特性,将脚本与JAR文件内容拼接,从而实现一键运行。这使得Java程序更易于融入命令行工作流。

开发 Mill

一周末学会光线追踪:从入门到渲染精美图像

2025-01-02

这是一本教你如何在周末用C++编写光线追踪器的教程。教程从输出简单的PPM图像开始,逐步讲解光线、相机、球体、材质等概念,最终实现带有抗锯齿、漫反射材质和金属材质的场景渲染。教程涵盖了向量运算、光线与球体相交检测、表面法线计算、材质抽象、以及景深模糊等技术细节,并提供了清晰的代码示例和精美渲染图像。即使你没有编程经验,也能跟着教程一步步完成一个自己的光线追踪器。

开发

模拟FMAdd指令:32位浮点数篇

2025-01-02

本文探讨了如何在不支持FMAdd指令的硬件上模拟该指令,特别是针对32位浮点数的SIMD实现。文章深入解释了FMAdd指令的工作原理,以及如何避免由于中间浮点运算带来的舍入误差(双重舍入)。作者详细介绍了一种基于“舍入到奇数”的巧妙方法,通过利用双精度浮点数的额外精度来消除舍入误差,最终实现精确的FMAdd运算。文章还简要介绍了如何计算精确的加法结果及其误差项,并预告了下一篇文章将探讨如何处理64位浮点数的情况。

1 2 194 195 196 198 200 201 202 213 214