分类: 开发

数据库模拟测试:弊大于利?

2024-12-30
数据库模拟测试:弊大于利?

使用模拟数据库进行测试虽然快速便捷,但作者认为其弊大于利。文章以创建用户为例,对比了模拟数据库和真实数据库测试方法。真实数据库测试能够及早发现潜在问题,例如唯一约束冲突、默认值处理和性能瓶颈等,从而节省调试时间,降低生产环境风险。此外,随着应用发展和数据库模式变更,真实数据库测试能更好地应对新验证、数据类型修改和时间戳精度变化等问题,确保代码与实际数据库模式一致。文章建议,对于数据访问层,真实数据库测试至关重要;而对于服务层,真实数据库测试能揭示业务逻辑与数据的交互方式;控制器层则可以模拟服务调用。平衡真实数据库测试和模拟测试,才能构建更可靠的应用。

Homa网络协议:挑战TCP/UDP的全新方案

2024-12-30

Homa是一种针对数据中心应用的新型网络传输协议,旨在减少数据中心中大量小消息传输的开销。它不同于传统的TCP/UDP,无需连接建立,通过独特的请求-应答机制和优先级队列管理,显著降低延迟。目前,Homa正在尝试进入Linux内核,但其未来可能更多地依赖于网络硬件加速。

1
开发 Homa

大型语言模型代码生成能力评估:MultiCodeBench 横空出世

2024-12-30
大型语言模型代码生成能力评估:MultiCodeBench 横空出世

近期,基于代码大型语言模型(LLM)的AI编程助手日益普及,大幅提升了开发效率。然而,现有代码生成基准测试主要关注通用场景,忽略了LLM在特定应用领域的性能。为此,研究人员提出了MultiCodeBench,这是一个包含2400个编程任务的新基准,涵盖12个热门软件开发领域和15种编程语言。通过对11个主流LLM的评估,MultiCodeBench揭示了不同领域LLM的代码生成能力,为开发者选择合适的LLM提供了实用指导,并为模型开发者改进特定领域代码生成能力提供了方向。

1
开发

基于大型语言模型的文本压缩工具ts_zip问世

2024-12-30

Fabrice Bellard发布了一款名为ts_zip的文本压缩工具,它利用大型语言模型RWKV 169M v4实现远超传统压缩工具的压缩比。ts_zip需要GPU和4GB内存,速度虽然不如传统压缩器,但其在英文及其他语言文本,甚至源代码压缩上表现出色。该工具的压缩率以比特每字节(bpb)衡量,实验结果显示其在enwik8和enwik9数据集上的压缩率显著高于xz。ts_zip采用算术编码和确定性模型评估,保证了压缩文件的可复现解压。

开发 RWKV

大型语言模型在单元测试生成中的评估研究取得突破

2024-12-30
大型语言模型在单元测试生成中的评估研究取得突破

研究人员对大型语言模型(LLM)在单元测试自动生成领域的潜力进行了深入评估。他们比较了17个Java项目中五种开源LLM与闭源GPT-4和传统工具Evosuite的性能,并考察了不同提示策略的影响。研究发现,开源LLM在数据隐私和某些任务上表现出色,但同时也揭示了LLM单元测试生成的局限性。该研究为未来LLM在单元测试生成中的应用提供了宝贵的指导意义。

开发

Diaspora* 内部团队沟通提示

2024-12-30
Diaspora* 内部团队沟通提示

这段文字摘录自Diaspora*内部团队沟通信息,提示网站需要启用JavaScript才能正常运行,并提供关于举报内容的说明,包括如何举报以及举报标准,最后还显示了Diaspora*项目的讨论和支持链接,以及一些网站信息,例如代码版本、Pod统计数据、条款、联系方式和切换触屏模式的选项。

开发 Diaspora*

SQLite:一个不可思议的数据库传奇

2024-12-30

SQLite,这个全球部署最广泛的数据库,由三人团队维护,拒绝外部贡献,却以其非凡的性能和稳定性征服了世界。它诞生于一艘美国军舰,旨在解决服务器宕机问题,如今已成为数万亿数据库的基石。SQLite并非开源,而是公有领域软件,拥有比开源许可更少的限制。其严格的测试流程,甚至包括模拟操作系统崩溃等极端情况,保证了其超高的可靠性。然而,其独特的商业模式——通过付费支持和会员制获得收入——也引人注目。SQLite的传奇故事,不仅在于其技术实力,更在于其背后的坚持和创新。

(avi.im)
开发 传奇

新型短消息压缩工具ts_sms问世

2024-12-30

ts_sms 是一款利用大型语言模型进行短消息压缩的工具。它采用无损压缩技术,通过识别并消除统计冗余来减少比特数,不会丢失任何信息。与brotli等工具相比,ts_sms在压缩小消息方面具有优势。该工具已发布Linux和Windows版本,其核心技术类似于ts_zip,并使用了与算术编码兼容的特殊填充系统,无需显式编码消息长度。

开发 ts_sms

微架构中的执行单元流水线

2024-12-30

本文探讨了乱序微架构中执行单元的流水线化。作者最初认为执行单元在处理完微操作后才会空闲,但以A14和M1中的Firestorm微架构为例,发现两个整数执行单元能够同时处理多个乘法操作,每个乘法操作需要三个周期。通过对比依赖指令序列和独立指令序列的执行时间,作者发现执行单元和微操作的许多组合都高度流水线化,这意味着一个微操作可以在执行单元仍在处理其他微操作时发出。这使得独立指令序列的执行时间从预期的6个周期缩短到4个周期。作者最后解释了指令延迟和带宽表中为何指定倒数吞吐量,因为它等同于周期/指令。

开发 执行单元

Panel Graphic Walker:一款基于HoloViz Panel的交互式数据探索工具

2024-12-30
Panel Graphic Walker:一款基于HoloViz Panel的交互式数据探索工具

Panel Graphic Walker是一个新颖的Python库,它将Graphic Walker的强大功能集成到HoloViz Panel中,方便用户在Jupyter Notebook和Panel应用程序中进行交互式数据探索。它提供了一个类似Tableau的界面,用户只需输入数据即可快速生成动态可视化图表和数据表格,支持多种数据后端和渲染器,并可通过服务器端计算处理大型数据集。该项目目前处于早期阶段,建议用户锁定版本以避免更新带来的变化。

Zig:在安全性与速度上超越Rust?

2024-12-30
Zig:在安全性与速度上超越Rust?

博主在一个垃圾回收字节码解释器项目中比较了Rust和Zig。在Rust中使用不安全代码的经历非常糟糕,复杂的别名规则和未定义行为让开发变得困难且易出错。而Zig则提供更友好的内存不安全环境工具,例如内置的内存泄漏检测和更易用的指针操作,最终Zig版本在速度和安全性上都优于Rust版本,并且开发效率更高。

开发

curl工具迎来重大更新:支持读取部分文件

2024-12-30
curl工具迎来重大更新:支持读取部分文件

curl 8.12.0版本即将推出一个令人兴奋的新功能:支持读取部分文件。用户现在可以使用新的变量系统,从文件中提取特定字节范围,并将其用于curl命令行中。这使得curl在处理文件时更加灵活,例如,可以提取文件的开头部分作为用户名,或提取中间部分作为POST请求的正文。此功能极大地扩展了curl的应用场景,为用户提供了更强大的命令行工具。

开发 文件处理

curl-impersonate项目更新:更强大的浏览器模拟能力

2024-12-30
curl-impersonate项目更新:更强大的浏览器模拟能力

lexiforest/curl-impersonate项目是对curl-impersonate的活跃分支,它增强了浏览器模拟能力,支持更多版本和构建目标。该项目通过修改curl,使其在TLS和HTTP握手过程中模拟Chrome、Edge、Safari和Firefox等主流浏览器的行为,从而绕过一些网站基于指纹识别的访问限制。更新包括对ECH、ZSTD压缩、X25519Kyber768曲线以及更多浏览器版本的支持,并提供更便捷的命令行工具和库函数接口。

86Box:重温经典x86架构的虚拟机

2024-12-30
86Box:重温经典x86架构的虚拟机

86Box是一款功能强大的x86架构虚拟机,能够运行从1981年到PCI总线时代各种基于IBM PC的系统和软件。它拥有易于使用的界面,支持多种处理器,并具有高度的可定制性,允许用户运行MS-DOS、老版本的Windows、OS/2以及其他复古系统和应用程序。 86Box 还支持广泛的周边设备,例如显卡、声卡、网卡等,并提供多种管理工具,方便用户管理虚拟机。无论是怀旧的用户还是对复古计算感兴趣的开发者,86Box都是一个理想的选择。

开发 x86模拟器

MiceWine:在安卓手机上运行Windows应用和游戏的尝试

2024-12-30
MiceWine:在安卓手机上运行Windows应用和游戏的尝试

MiceWine项目致力于让安卓智能手机运行Windows应用程序和游戏。它使用为Android编译的Wine定制版本和Box64,以最佳方式运行。目前仍在持续开发中,基于Termux-X11的XServer。支持安卓10及以上系统,Adreno 7xx和6xx显卡已支持Turnip/Zink,其他显卡部分支持原生/Zink(实验性)。非Adreno GPU上的原生Vulkan是实验性的,需要一些测试。

开发 Windows应用

水力学类比:电子学教学的绊脚石

2024-12-30
水力学类比:电子学教学的绊脚石

许多电子学入门教材使用水力学类比解释电路,将电流比作水流,电池比作水泵。然而,作者认为这种类比存在严重缺陷,尤其在解释半导体元件如JFET和MOSFET时,类比模型根本无法解释其特性曲线,反而增加了学习难度。作者建议抛弃这种不准确的类比,从更基础的原理出发学习电子学。

Python 2024:速度更快,功能更强大,更受欢迎

2024-12-30
Python 2024:速度更快,功能更强大,更受欢迎

2024年,Python凭借其速度和功能的提升以及日益壮大的用户群体,再次证明了其作为最受欢迎、最实用和最有前途的编程语言之一的地位。Python 3.13 版本引入了“无GIL”构建和实验性JIT编译器,显著提升了性能。此外,Python 还清理了大量的过时模块,并凭借在人工智能、机器学习和数据科学领域的突出作用,在Tiobe编程语言指数中排名攀升,甚至在GitHub上的使用率超过了JavaScript,巩固了其“三大编程语言”之一的地位。

开发

Haskell中Lambda抽象的重载:优雅实现EDSL

2024-12-30
Haskell中Lambda抽象的重载:优雅实现EDSL

本文介绍了一种在Haskell中重载lambda抽象以构建嵌入式领域特定语言(EDSL)的方法。作者通过巧妙地利用`Port`类型和`encode`、`decode`函数,将Haskell函数转换为自定义类别中的态射,从而实现了简洁直观的语法,避免了繁琐的Arrow抽象和proc notation。这种方法无需任何元编程或编译器插件,仅需少量Haskell代码即可实现。作者以流程图DSL为例,展示了该方法的应用,并讨论了避免重复和处理副作用等问题。

IOCCC 28周年庆:庆祝40年编程创意

2024-12-30

IOCCC(国际C代码混乱代码大赛)迎来了第28届比赛,同时也是其40周年庆典。大赛旨在庆祝C语言编程的创造力和古怪的代码技巧。虽然Mastodon网站应用需要启用JavaScript才能使用,但用户也可以尝试使用其原生应用。

开发 编程大赛

Guile 的面向对象编程问题

2024-12-30

本文探讨了 Guile Scheme 的面向对象编程系统 GOOPS 与 Common Lisp 对象系统 CLOS 之间的差异,并指出了 GOOPS 的一些不足。例如,GOOPS 的setter 特化与继承不兼容,不支持 before/after/around 方法限定符,方法组合算法不可控,方法参数特化受限,不支持关键字参数,并且缺少文档字符串。作者认为这些问题导致 GOOPS 使用起来不够优雅且易于出错,并提出了一些改进建议,例如模仿 CLOS 的行为,增加方法限定符,改进方法参数特化机制等。

开发 GOOPS CLOS

C语言构建完整计算机模拟器:从NAND门到Tetris游戏

2024-12-30
C语言构建完整计算机模拟器:从NAND门到Tetris游戏

这是一个用C语言从零开始构建计算机模拟器的项目。项目遵循NandToTetris课程的思路,逐步构建从逻辑门到最终运行Tetris游戏的完整计算机系统。不同于其他直接从CPU级别开始的模拟器项目,该项目从单个NAND门开始,逐步构建更复杂的芯片,例如多路器和解多路器,最终实现整个计算机系统。目前项目处于早期阶段,作者计划完成所有硬件部分后,再着手编写汇编器。

Little Snitch:守护macOS网络安全的卫士

2024-12-30
Little Snitch:守护macOS网络安全的卫士

Little Snitch是一款macOS网络监控和个人应用防火墙,它以连接警报的方式,让你掌控应用的网络连接权限。你可以选择允许或拒绝连接,确保你的数据安全。它拥有强大的功能,例如静默模式、可视化流量图表、灵活的规则管理和内置DNS加密等,让你轻松监控并管理Mac的网络活动,保护你的隐私。更有基于加密代码签名的应用识别,防止恶意软件伪装。

开发

Mill构建工具:如何通过选择性测试加速CI

2024-12-30

在大型代码库中,每次运行所有测试效率低下。文章探讨了三种选择性测试方法:基于文件夹、基于依赖和基于启发式。基于文件夹的方法简单但可能遗漏错误;基于依赖的方法更全面,但可能过度测试;基于启发式的方法通过自定义规则优化测试选择,但需要权衡测试彻底性和速度。Mill构建工具原生支持基于依赖的选择性测试,显著提升CI效率,但仍需结合启发式方法进一步优化,以平衡速度和测试覆盖率。

“Zombocom难题”:从“万能”到“专精”的软件开发之道

2024-12-29
“Zombocom难题”:从“万能”到“专精”的软件开发之道

文章探讨了“Zombocom难题”——许多低代码/无代码平台、超级应用等因无法满足用户特定需求而失败。作者认为,成功的关键在于解决特定用户的特定问题,找到产品与市场的特定契合点。亚马逊的成功案例佐证了这一点:它从在线书店起步,逐步拓展至其他领域。与之类似,Excel也因最初精准定位于小型企业主和会计师而取得成功。作者强调,平台应从产品出发,而非反之;应先打造优秀且独立的产品,再考虑平台化。最终,作者总结道,成功的秘诀在于结合系统性思维和产品思维,既要洞察系统级机遇,又要找到首个最佳客户,从而实现从“单一用途产品”到“平台”的转变。

开发

Stripe悄然发布V2 API:RESTful改进与DX转变

2024-12-29

Stripe在十月低调发布了V2 API,与V1版本相比,它将请求主体从表单编码改为JSON,并引入了HATEOAS风格的分页。V2 API旨在提高速度,并通过`include`参数控制子对象加载。此外,它还尝试实现真正的幂等性,以更好地处理失败请求。然而,V2 API在REST动词的使用和资源建模上仍有改进空间。作者认为,如今的优秀开发体验(DX)更依赖于高质量的SDK,而非完美的REST API。

开发

本地运行大型语言模型:一位开发者的实践经验

2024-12-29
本地运行大型语言模型:一位开发者的实践经验

一位开发者分享了在个人电脑上运行大型语言模型(LLM)的经验。他使用一台配置强大的电脑(i9 CPU,4090 GPU,96GB RAM),结合Ollama、Open WebUI等开源工具,成功运行多个LLM,并用于代码补全、笔记查询等任务。文章详细介绍了使用的硬件、软件、模型以及更新方法,并强调了本地运行LLM带来的数据安全和低延迟优势。

开发

BSD kqueue:技术债务的巨峰

2024-12-29

本文探讨了BSD kqueue和Linux epoll在网络编程中的差异。kqueue使用事件过滤器,功能强大但缺乏可组合性,导致技术债务累积。epoll则直接操作内核句柄,可组合性更强,能更灵活地监控各种内核资源,例如套接字、文件系统路径、定时器等。作者认为epoll的设计更优越,因为它避免了kqueue因新增功能而不断增加事件过滤器类型的窘境。

开发 kqueue epoll

Racket 扩展:在源代码中嵌入图像

2024-12-29
Racket 扩展:在源代码中嵌入图像

这个Racket库允许开发者将图像直接嵌入到源代码文件中,无需外部文件引用。它利用µ reader扩展和uuencode编码将图像数据转换为文本形式,解决了传统方法下图像嵌入导致文件格式变为二进制,难以使用git等工具的问题。该库提供打包和解包函数,方便开发者将图像转换为可嵌入的文本形式,并在需要时进行解码显示。虽然目前错误处理和文本格式还有待改进,但它为创建自包含的Racket项目提供了便利。

开发 图像嵌入

领域驱动设计:我为什么不用它

2024-12-29

本文作者Tony Marston是一位经验丰富的软件开发人员,在长达40年的职业生涯中,他积累了丰富的构建企业级应用程序的经验。他在这篇文章中阐述了他为什么不使用领域驱动设计(DDD)的原因。他认为DDD的一些建议过于强调面向对象的设计理论,而忽略了数据库设计的重要性以及在大型系统中代码可重用性的价值。他更倾向于一种分层架构,为每个数据库表创建一个单独的类,并使用继承和模板方法模式来实现代码重用。他认为这种方法更符合实际项目的需求,并提高了开发效率。

开发 代码重用

十款提升Django项目性能、安全性和生产力的工具

2024-12-29

本文介绍了十款必备的Django工具,涵盖依赖管理、性能分析等方面,旨在提升开发效率、增强安全性并优化性能。文章逐一讲解了Poetry、Django Extensions、Django REST Framework、djangorestframework-camel-case、Django Storages、django-simple-history、django-otp、Celery、Gunicorn with Uvicorn Workers和Silk等工具的功能和优势,并与替代方案进行了比较,例如Pipenv、FastAPI、django-reversion等。这些工具能够帮助开发者构建更快、更安全、更高效的Django应用程序。

开发
1 2 197 198 199 201 203 204 205 213 214