分类: 开发

纯IPv6网络搭建指南:Jool工具实战

2025-01-06

本文详细介绍了如何使用Jool工具在Linux系统上搭建纯IPv6网络。作者首先阐述了传统家庭网络的IPv4/IPv6双栈架构存在的问题,然后引入了Jool工具,并将其与TAYGA进行了比较,突显了Jool的优势(例如支持Stateful NAT64)。文章随后提供了在不同Linux发行版上安装Jool的步骤,并详细讲解了如何配置Stateful NAT64、DNS64以及IPv4-to-IPv6端口映射,最终实现纯IPv6网络下的IPv4访问。文章还涵盖了配置持久化的方法,确保重启后配置生效。

开发 Jool

程序员的调试圣战:printf 调试并非洪水猛兽

2025-01-06

一位资深游戏开发者Alex Dixon驳斥了“拒绝使用调试器,只用记事本和printf调试的极端观点”。他认为,调试器、地址清理器等工具能显著提高效率,即使是经验丰富的程序员,也会在大型项目或遗留代码中遇到难以捉摸的bug,这时强大的调试工具就显得尤为重要。虽然他提倡使用调试器,但也承认printf调试在特定场景下(例如,调试发布版本或移动设备触摸事件)的实用性。最终,他强调,高效的bug修复才是最终目标,选择适合的工具才是关键。

开发

程序员的职业发展:这并非你的最后一份工作

2025-01-06
程序员的职业发展:这并非你的最后一份工作

一位资深程序员分享了他对职业发展的独特见解:无论你身处哪个阶段,这都并非你的最后一项技术或工作。他以自身经历为例,阐述了持续学习新技术(如Rust)的重要性,以及不断变换工作或角色以追求职业成长的必要性。他认为,适应行业变化,拥抱新技术,并保持持续学习的态度,才能在漫长的职业生涯中保持竞争力,最终找到适合自己的长期发展道路。

LogLayer:统一你的 JavaScript 日志记录

2025-01-06
LogLayer:统一你的 JavaScript 日志记录

LogLayer 是一个 JavaScript 日志记录库的统一层,提供一致的日志记录体验。它支持多种日志库(如 Pino、Bunyan 等)和云服务(如 Datadog、New Relic 等),并允许通过插件扩展功能,例如数据过滤和加密。开发者可以轻松添加标签、元数据和错误信息,并随时切换日志提供商,而无需更改应用程序代码。

开发 LogLayer

Chip-8模拟器入门:用代码重现复古游戏机

2025-01-06

这篇文章介绍了Chip-8,一个简单的虚拟游戏机系统,并讲解了如何构建其模拟器。文章深入浅出地解释了二进制、十六进制以及Chip-8指令的工作原理,为读者构建模拟器提供了基础知识。作者以循序渐进的方式,从简单的指令到更复杂的指令,引导读者逐步了解Chip-8的运行机制,为对复古游戏机和模拟器技术感兴趣的读者提供了良好的学习资源。

开发 Chip-8

开源4G/5G软件无线电系统srsRAN

2025-01-05
开源4G/5G软件无线电系统srsRAN

srsRAN是一个开源的4G和5G软件无线电应用集合,由SRS公司开发。它使用可移植的C++编写,依赖第三方库极少,可在Linux系统和现成的计算与无线电硬件上运行。srsRAN项目包含一个完整的O-RAN原生5G RAN CU+DU,以及一个端到端的4G网络实现,涵盖了UE、eNodeB和EPC的全栈应用。该项目代码托管在GitHub上,并提供详尽的文档和活跃的社区讨论。

开发

构建一个礼貌且快速的网络爬虫

2025-01-05

Mozilla工程师Dennis Schubert发现,Diaspora服务器70%的负载来自行为不良的机器人,其中OpenAI和Amazon贡献了40%。本文介绍了构建一个礼貌且快速的网络爬虫的经验,包括速率限制、尊重robots.txt规则、最小化重新抓取等技术细节。作者使用Python和gevent,通过为每个域名分配一个协程来实现速率限制,并利用Postgres数据库进行高效的入队和去重。这种设计使得爬虫既能快速高效地抓取数据,又能避免对目标网站造成过大压力。

开发 速率限制

Axum 0.8.0 发布:路径参数语法和可选提取器改进

2025-01-05

Axum 0.8.0 版本发布啦!这个基于 Tokio、Tower 和 Hyper 构建的 Rust Web 框架带来了重大更新。最显著的变化包括路径参数语法的修改(从 `/single` 和 `/many` 变为 `/{single}` 和 `/{*many}`),以及对 `Option` 提取器的改进,允许更灵活地处理可选参数和错误。此外,由于 Rust 语言特性更新,`#[async_trait]` 宏已不再需要。这些改进提升了 Axum 的易用性和灵活性,但同时也带来了一些破坏性修改,升级需谨慎,建议查阅更新日志。

开发 Axum

东北大学计算机科学课程改革:舍本逐末?

2025-01-05
东北大学计算机科学课程改革:舍本逐末?

东北大学Khoury计算机学院对课程进行了大改,取消了基础课程,例如“Fundies 1”、“Fundies 2”和“面向对象设计”。作者认为,此举舍弃了计算机科学的基本原理,仅仅追逐当前流行的Python语言,忽视了培养学生系统化编程设计能力的重要性。作者认为,新的课程改革可能会降低教学质量,不利于培养合格的软件开发者,并对学校的计算机科学项目造成长远的影响。

开发

WireGuard:从简单到复杂的配置指南

2025-01-05

本文介绍了WireGuard的几种不同配置方式,从最简单的完全隔离的内部IP地址空间到最复杂的“VPN”模式,其中内部和外部网络都可访问相同的IP地址。作者详细阐述了每种配置的难度和潜在问题,例如路由冲突和递归路由。文章强调了提前规划的重要性,并建议在设计WireGuard环境时,尽量选择简单的配置以避免复杂的路由设置。

开发

Sequin:使用水印协调Postgres中的变更数据捕获

2025-01-05
Sequin:使用水印协调Postgres中的变更数据捕获

Sequin是一个实时变更数据捕获(CDC)工具,它将Postgres数据库中的变化同步到Kafka、SQS等目的地。文章重点介绍了Sequin如何巧妙地解决在同时进行全量数据捕获和增量数据捕获时出现的棘手问题。通过使用水印机制,Sequin协调了两个数据流(全量数据流和增量数据流),避免了数据丢失或重复,保证了数据的一致性。Sequin采用分块捕获策略,将全量数据分成小块处理,提高了效率并降低了内存消耗。

高效的Linux系统调用拦截:告别ptrace的低效

2025-01-05

本文介绍了一种比ptrace更高效的Linux系统调用拦截方法:seccomp user notify。它利用BPF过滤器,仅对目标系统调用返回结果,显著降低性能开销。作者以其工具copycat为例,演示了如何拦截open()系统调用,实现文件替换,并详细解释了seccomp user notify的工作机制,包括BPF过滤器的编写和系统调用参数的处理。文章还讨论了安全性和一些潜在问题,例如TOCTOU攻击。

开发

AI辅助编程:硬币的两面

2025-01-05
AI辅助编程:硬币的两面

AI辅助编程工具的兴起给软件工程带来了革命性的变化,但也并非完美无缺。本文探讨了两种典型的AI使用模式:“引导者”和“迭代者”。“引导者”利用AI快速构建原型,而“迭代者”则在日常开发中使用AI辅助完成代码补全、重构等任务。虽然AI能显著提升效率,但同时也存在“70%问题”:AI能快速完成大部分工作,但剩余30%的精细化处理仍需人工完成,这对于缺乏经验的开发者来说尤其困难。文章强调,AI更适合经验丰富的开发者,能帮助他们加速已知问题的解决和探索新的方法,而非完全取代开发者。未来,AI辅助编程将朝着“智能代理”方向发展,具备更高的自主性和多模态能力,但仍需开发者进行监督和指导。最终,软件工程的本质不会改变,对经验丰富的工程师的需求甚至可能增加。

开发

程序员技能提升宝典:90年代风格链接列表

2025-01-05
程序员技能提升宝典:90年代风格链接列表

这篇博文以90年代风格的链接列表形式,推荐了一系列学习新技能的优质资源,涵盖金融、音乐创作、机器学习、算法、优化算法、大语言模型应用开发以及JavaScript等领域。资源类型多样,包括书籍、在线课程、互动网站和博客文章,并对每个资源的优缺点进行了详细的评价,例如Andrew Ng的机器学习课程以其清晰的讲解和练习而闻名,而《Essentials of Metaheuristics》则以其注重实践和清晰的解释而受到推荐。对于想要提升技能的程序员和开发者来说,这篇文章无疑是一份宝贵的学习指南。

开发

AI代码分析:从菜鸟到专家

2025-01-05

作者讲述了如何提升AI代码分析能力的经历。最初,AI像刚毕业的新手,只能逐行阅读代码。作者受到资深开发人员分析代码思路的启发,改变了AI的分析方法:先构建代码的整体架构模型,再按功能模块分组分析,最后才深入到代码细节。这种方法显著提高了AI的分析准确性和深度,使其能够发现潜在的连接错误、性能瓶颈等问题,甚至能够提出架构改进建议,达到了资深开发者水平。这表明,提升AI代码理解能力的关键不在于更大的模型或更复杂的算法,而在于模拟资深开发人员的思维方式,注重上下文理解、模式匹配、影响分析和历史理解。

(nmn.gl)
开发

家庭服务器安全事件:一次惨痛的教训

2025-01-05

作者在圣诞假期后发现其家庭服务器被Kinsing恶意软件感染,该软件利用了未受保护的Docker容器漏洞进行加密货币挖掘。攻击者持续尝试暴力破解服务器,最终作者关闭了所有对外网络访问端口,减少攻击面。这次事件提醒我们,将家庭服务器暴露于互联网存在巨大风险,即使设置了密码,也需采取必要的安全措施。

Tailscale如何穿越NAT网络:一场网络连接的冒险

2025-01-05
Tailscale如何穿越NAT网络:一场网络连接的冒险

Tailscale这篇博文深入探讨了其VPN如何克服NAT(网络地址转换)的挑战,实现设备间的直接连接。文章阐述了NAT的工作原理,以及应对NAT和防火墙的各种技术,包括STUN协议用于发现公网IP地址、利用生日悖论加速端口探测,以及使用DERP作为备用中继。最终,文章介绍了ICE协议,它能自动尝试各种方法,选择最佳连接方式,确保稳定可靠的连接。

开发

长轮询胜过WebSocket:一个可扩展实时系统的实践

2025-01-05

Inferable团队在构建基于Node.js和TypeScript的可扩展实时系统时,选择了长轮询而非WebSocket。他们面临着数百个工作节点需要实时获取新任务以及代理需要实时状态更新的挑战。长轮询通过保持HTTP连接打开直到有新数据或超时,有效地解决了这两个问题,避免了WebSocket带来的复杂性,例如身份验证、可观察性以及基础设施兼容性问题。文章详细介绍了他们的长轮询实现,包括数据库优化、错误处理以及最佳实践,例如强制TTL、客户端可配置TTL以及合理的数据库轮询间隔。他们最终选择长轮询是因为其对消息传递机制的精细控制、零外部依赖以及易于理解和修改等优点。文章也简要讨论了ElectricSQL等替代方案,并指出了WebSocket的适用场景。

开发 长轮询

交互式CSS Flexbox学习工具

2025-01-05

CSS Flexbox Playground是一个交互式的在线学习工具,允许用户通过调整不同的Flex属性来实时查看布局变化,并复制生成的CSS代码。该工具涵盖了flex-direction、justify-content、align-items和flex-wrap等关键属性,帮助用户直观地理解Flexbox布局的原理。通过动手实践,用户可以快速掌握Flexbox布局技巧,提升网页开发效率。

开发

自由软件基金会呼吁持续向微软施压

2025-01-05

自由软件基金会(FSF)发表博文,呼吁大家持续向微软施压,抵制其反自由软件的策略。文章以今年的国际反数字限制日(IDAD)为例,微软强制用户升级到Windows 11并要求安装TPM模块的行为,损害了用户自由和数字权益。FSF鼓励大家转向GNU/Linux系统,避免使用微软的新软件,并从微软GitHub迁移项目,以支持自由软件运动。同时,FSF也正在进行年度募捐,希望获得更多支持以对抗数字限制和促进软件自由。

开发 数字限制

Wildcard:用表格定制网页的浏览器扩展

2025-01-05
Wildcard:用表格定制网页的浏览器扩展

麻省理工学院博士生Geoffrey Litt开发了一款名为Wildcard的浏览器扩展,它允许用户使用类似电子表格的界面来修改网站,满足个性化需求。该项目已发表多篇学术论文,并提供演示视频,展示了如何用Wildcard为Hacker News添加阅读时间等功能。目前Wildcard处于开发阶段,但已开放试用版下载。

开发 网页定制

重试算法对比:线性、指数和上限指数回退

2025-01-05

本文比较了三种常见的重试算法:线性回退、指数回退和上限指数回退。线性回退每次重试增加固定等待时间;指数回退每次重试将等待时间翻倍;上限指数回退则在指数回退的基础上设置最大等待时间。文章还探讨了添加随机抖动以避免多个客户端同时重试导致的“惊群效应”。

MyST Markdown:革新科学传播的开源工具集

2025-01-05
MyST Markdown:革新科学传播的开源工具集

MyST Markdown是一个开源的、社区驱动的工具集,旨在彻底改变科学传播。它支持博客、在线书籍、科学论文、报告和期刊文章的创作,并提供强大的功能,例如实时图表嵌入、Jupyter支持、PDF导出以及与多种期刊的兼容性。MyST的核心是其灵活的Markdown扩展,它允许用户轻松地整合代码、计算结果和交互式元素,从而创建动态且引人入胜的文档。无论你是科学家、工程师还是技术作家,MyST都能帮助你更有效地分享你的研究成果和知识。

开发

PyPI 项目隔离:对抗恶意软件的新武器

2025-01-05
PyPI 项目隔离:对抗恶意软件的新武器

Python 包索引 (PyPI) 推出了“项目隔离”功能,以应对持续存在的恶意软件问题。该功能允许管理员将潜在有害的项目标记为隔离状态,阻止用户轻松安装,从而减少恶意软件造成的损害。该系统并非直接删除项目,而是将其从简单索引中隐藏,项目所有者仍然可以修改项目(但不能发布新版本),管理员可以随时解除隔离。未来,PyPI 计划通过自动化系统,根据多个可信报告自动隔离项目,进一步提高效率,并减少恶意软件传播的时间窗口。

开发

WebGPU下的黏菌模拟:用TypeScript和计算着色器实现

2025-01-05
WebGPU下的黏菌模拟:用TypeScript和计算着色器实现

SuboptimalEng使用WebGPU和TypeScript创建了一个令人惊叹的黏菌模拟。该项目重现了Sebastian Lague的经典作品,利用计算着色器高效地模拟黏菌的生长和运动。项目包含详细的设置指南、截图和资源链接,并已部署到GitHub Pages,方便用户体验。这是一个学习WebGPU和计算着色器技术的绝佳案例。

开源软件版权归属之争:你的代码,谁说了算?

2025-01-04
开源软件版权归属之争:你的代码,谁说了算?

本文探讨了开源软件(FOSS)中版权归属的复杂性。传统上,许多FOSS项目将版权分配给非营利组织,但这种做法引发了争议。作者指出,大多数FOSS贡献者的版权实际上属于他们的雇主,这削弱了开源软件的copyleft保护。如果主要项目放弃版权分配,将会导致版权主要掌握在企业手中,这可能会阻碍GPL的执行。文章呼吁FOSS贡献者认真思考版权归属问题,并建议采取措施保护其版权,维护开源社区的利益,避免copyleft沦为摆设。

开发

轻量级Wayland窗口管理器Labwc:简洁高效的窗口堆叠

2025-01-04
轻量级Wayland窗口管理器Labwc:简洁高效的窗口堆叠

Labwc是一个基于wlroots的轻量级Wayland窗口管理器,其设计理念源于openbox,专注于简洁高效的窗口堆叠和渲染窗口装饰。它不依赖于任何面板、截图或壁纸工具,而是将这些功能留给客户端自行实现,从而保持其轻量级特性。Labwc遵循wlroots和sway的代码风格和设计理念,仅支持Wayland协议,不支持dbus、sway/i3-IPC等其他控制方式,旨在避免自定义IPC协议导致的Wayland生态碎片化。

开发 wlroots

Go语言汇编代码中的帧指针错误:两个案例分析

2025-01-04

本文分析了Go语言中两个因错误的汇编代码导致帧指针被覆盖而引发的崩溃案例。第一个案例中,Go-metro库的汇编代码错误地覆盖了AMD64架构下的帧指针寄存器BP,导致程序崩溃。第二个案例中,Apache Arrow库的ARM64汇编代码错误地覆盖了栈上保存的帧指针,同样导致程序崩溃。作者建议在编写Go汇编代码时,优先使用像Avo这样的汇编代码生成器,避免手动操作寄存器和栈,并详细解释了ABI和调用约定,以及如何避免此类错误。

开发

ELKS:为8086打造的嵌入式Linux内核

2025-01-04
ELKS:为8086打造的嵌入式Linux内核

ELKS项目致力于为基于Intel IA16架构的16位处理器(如8086、8088等)提供一个类Linux操作系统。它支持网络和硬盘安装(使用MINIX和FAT文件系统),最低仅需256KB内存即可运行,可在老式IBM PC及现代SBC、SoC和FPGA上运行。项目提供可下载的磁盘镜像和完整的构建说明,并包含在线演示环境。

开发 8086

开源隐私优先屏幕录制工具Efficient Recorder

2025-01-04
开源隐私优先屏幕录制工具Efficient Recorder

受到一条Twitter的启发,开发者Jan Wilmake创建了一个名为Efficient Recorder的开源项目,旨在打造一个注重隐私的Rewind.ai替代方案。该工具是一个命令行界面 (CLI) 工具,能够同时录制屏幕、系统音频和麦克风音频,并将数据直接流式传输到S3存储桶。它具有智能音频录制(基于语音检测切换采样率)、自动截图和摄像头录制功能,并采用高效的资源管理策略,最大限度地减少系统开销。Efficient Recorder 支持自定义配置,例如截图和摄像头的间隔时间以及图像质量等。

开发
1 2 192 193 194 196 198 199 200 213 214