肖恩技术周刊(第 51 期):为何浏览器请求头User-Agent均以Mozilla开头?
周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“学习资源”等。
更新时间: 周一
历史收录: 技术周刊合集
订阅方式: 微信公众号“肖恩聊技术”,除周刊外还有更多原创技术博文,欢迎关注👏🏻~
浏览器请求头中的 User-Agent
字段之所以均以“Mozilla”开头,主要是出于历史和兼容性的原因。早期 Netscape Navigator 是主流浏览器,其 User-Agent
字段以“Mozilla”开头。当时许多网站会通过检测 User-Agent
字段来判断浏览器类型,并据此提供不同的代码支持。如果字段中没有“Mozilla”,网站可能会拒绝服务或显示错误。
为了兼容这些网站,后来的浏览器(如 Internet Explorer、Chrome、Firefox 等)也在其 User-Agent
字段中保留了“Mozilla”字样。这种格式已成为一种行业标准,许多网站仍然依赖它来判断浏览器类型。浏览器厂商继续沿用这种格式,以避免被网站错误识别或屏蔽,确保网站的兼容性和用户体验。
业界资讯
马斯克切脑全场震撼!插脑只要1.5秒,26年治愈失明,28年全人类变AI
2025年6月28日,马斯克的Neuralink公司发布脑机接口技术进展。目前,七名志愿者已植入设备,可意念玩游戏、控制机械臂。第二代手术机器人1.5秒植入电极,兼容99%人类大脑。未来三年计划:2025年言语皮层植入设备,2026年增加电极帮助盲人重获视觉,2027年多设备植入,2028年实现全脑接口与AI集成。产品包括Telepathy、Blindsight和Deep,分别针对运动障碍、失明和神经系统疾病。技术有望提升人类与计算机交互速率,但也引发安全和伦理担忧。
Google发布开源AI智能体Gemini CLI
Gemini CLI,Google免费开源的 AI 代理工具,可将 Gemini 直接集成到开发者的终端中。它具备轻量级访问 Gemini 的能力,适用于多种任务,如内容生成、问题解决、深度研究和任务管理等。Gemini CLI 与 Google 的 AI 编程助手 Gemini Code Assist 集成,为开发者提供免费的 AI 编程支持。它还具备强大的 AI 功能,如代码理解、文件操作、命令执行和动态故障排除等。此外,Gemini CLI 是完全开源的,可由开发者社区进行改进和扩展。
京东阿里都要发币了,稳定币是智商税吗?
探讨了稳定币的定义、用途及中美对其的态度和推动原因。稳定币是一种币值相对稳定的加密货币,如USDT和USDC,其发行方通过持有高流动性资产(如美债)盈利。稳定币的主要用途是支付,具有快速交易、无需中央机构等优势,尤其在跨境支付中表现出色。然而,其匿名性也带来了监管挑战,如增加反洗钱和反恐怖融资的难度。
美国通过立法规范稳定币,要求100%备兑及反洗钱等措施,旨在巩固美元霸权。稳定币在一些新兴市场受欢迎,且可作为美债的持续买家,支撑美债价值。中国则将稳定币视为防御性选择,此前禁止境内交易虚拟货币,但保留了香港及数字人民币的“口子”。数字人民币可视为人民币稳定币,与稳定币有相似之处,但也存在发行和运营机制上的区别。总体来看,稳定币的发展既带来了机遇,也引发了监管和国际货币格局的变革。
技术博客
可信实验白皮书系列07:高阶实验工具
本文聚焦高阶实验工具,针对单次实验功效不足、假阳性及策略调优等问题,重点解读统合分析和多重比较。统合分析整合多次独立实验结果,通过逆方差加权、分母求和加权、样本量加权等方式,提高实验功效并避免辛普森悖论。多重比较则解决多指标、多实验组带来的假阳性问题,采用二阶段Benjamini-Hochberg方法控制假发现率。
此外,文章还探讨了序贯分析、异质性因果效应估计、多臂老虎机、交错式实验设计等拓展工具,旨在提升实验效率和科学性。未来计划进一步探索和应用这些工具,以更好地应对复杂实验场景,推动实验方法的持续发展。
上下文工程兴起
本文探讨了“上下文工程”的兴起及其重要性。上下文工程是指构建动态系统,为大型语言模型(LLM)提供正确的信息和工具,使其能够合理完成任务。它强调系统性、动态性、提供正确的信息和工具、格式的重要性以及确保LLM能够合理完成任务。随着LLM应用的复杂性增加,上下文工程成为AI工程师的关键技能,与提示词工程不同,它更注重动态数据的处理和整合。
文章指出,LLM出错的常见原因是缺乏正确的上下文,而不是模型本身的问题。上下文工程通过确保LLM获得正确的信息和工具,帮助解决这些问题。LangGraph和LangSmith是两个支持上下文工程的工具。LangGraph提供了高度的可控性,允许开发者精确地管理LLM的输入和输出;LangSmith则通过追踪代理调用和LLM的输入输出,帮助开发者调试和优化上下文。作者认为,随着对上下文工程的关注增加,AI应用将变得更加高效和可靠。
Uber如何削减持续集成成本
本文介绍了Uber如何通过改进其SubmitQueue系统大幅降低CI资源使用并加快等待时间。SubmitQueue是Uber用于高效整合代码变更并保持主分支绿色的系统,但存在资源利用率高和等待时间长的问题。Uber通过引入BLRD(绕过大型差异)和改进概率模型,优化了构建优先级,减少了不必要的构建,提高了资源效率和开发人员生产力。改进后的系统在Go、iOS和Android的大型monorepo中进行了测试,结果显示资源使用减少了53%,等待时间缩短了37%,同时保持了主分支的绿色。
开源项目
BookLore:书籍管理工具
自托管用于管理个人书籍的工具。支持PDF和电子书的浏览、阅读以及阅读进度跟踪,具备智能元数据处理、多用户支持、内置阅读器、OPDS支持、多书籍上传、邮件分享等功能。
code-server:网页VSCode
通过浏览器访问运行在任何机器上的 VS Code,提供基于浏览器的开发环境。它支持在任何设备上进行代码开发,利用云服务器加速任务处理,节省移动设备电量,并支持团队协作和远程开发。
xiaomusic:小爱音箱无限听歌
实现通过小爱音箱播放音乐,支持语音指令控制。使用 yt-dlp 下载音乐,支持多种音乐格式(如 mp3、flac、wav 等),并兼容多种小爱音箱型号。
学习资源
程序员的提示工程实战手册
AI编程助手的输出质量高度依赖于提示词的质量,因此提示工程成为一项必备技能。作者提供了10种提示词技巧,如角色提示、明确上下文、输入/输出示例、迭代式链条等,帮助开发者构建有效的提示词。同时,文章强调了高效代码提示的基础原则,包括提供丰富上下文、明确目标、分解复杂任务等。
在调试、重构和实现新功能的场景中,分别提出了具体的提示模式,例如清晰描述问题、提供最小可复现示例、明确陈述重构目标等。文章还列举了常见的提示反模式及其避免方法,如避免模糊提示、超载提示、忽略AI澄清等。通过这些技巧和模式,开发者可以将AI编程助手从一次性代码生成器转变为真正的结对程序员,提升开发效率和代码质量。
从0开始学习英语语法
为英语学习者提供了一个基于社区的语法学习资源,并结合了实际的学习方法和工具。强调了语法作为学习英语的基础,同时指出语感的培养是提升英语能力的关键。
面向初学者的网页开发教程
微软推出的一门面向初学者的Web开发课程,旨在通过24课、12周的学习,帮助学生掌握Web开发的基础知识和技能。课程内容涵盖JavaScript、CSS和HTML,并结合实际项目,如虚拟温室、浏览器扩展、太空游戏和银行应用程序等,采用项目驱动学习和频繁测验的方式,增强学习的趣味性和知识保留率。
随便看看
人工智能正在使我们的思想趋于同质化
文章探讨了人工智能(如ChatGPT)对人类思维和写作的同质化影响。研究发现,使用ChatGPT时,人们的脑部活动减少,创造力和工作记忆相关连接降低,写作内容趋于标准化和缺乏个性。例如,麻省理工学院的实验表明,使用ChatGPT的学生在写作时脑部活动显著低于其他组,且更倾向于使用常见词汇和观点。康奈尔大学的研究也发现,不同文化背景的用户在使用ChatGPT后,写作内容变得更加相似,且趋向于西方文化规范。这种同质化不仅体现在内容上,还体现在写作风格上。此外,人工智能的平均化输出可能削弱人类的原创性和独特性,甚至强化文化霸权。尽管人工智能提高了创作效率,但其对人类思维和文化多样性的长期影响仍不确定。文章呼吁人们关注这一问题,以避免人类失去独特的创造力和文化身份。
GitHub CEO:尽管人工智能蓬勃发展,手动编码仍然至关重要
GitHub 首席执行官 Thomas Dohmke 强调,尽管人工智能工具在软件开发中日益普及,但保留手动编码技能至关重要。他认为开发者需要能够修改 AI 生成的代码,以避免生产力问题。Dohmke 提出了一种有效的工作流程,即 AI 工具生成代码并提交拉取请求,开发者利用编程技能进行即时调整。他还警告说,过度依赖自动化工具可能会导致效率低下,例如花费过多时间用自然语言解释简单更改,而不是直接编辑代码。此外,Dohmke 讨论了“氛围编码”这一概念,这是由 OpenAI 联合创始人 Andrej Karpathy 提出的,用来描述过度依赖 AI 生成代码的现象。
编写玩具软件是一种乐趣
文章主张编写玩具程序(toy programs)是一种学习编程和重拾编程乐趣的有效方式。作者引用了理查德·费曼的名言“我不能创造的东西,我就不理解”,强调通过实践来深入理解编程的重要性。在AI威胁取代程序员和软件开发日益工业化的背景下,编写玩具程序能帮助开发者保持对编程的热爱。玩具程序遵循80:20原则,即用20%的工作量实现80%的功能,避免过度工程化。作者还分享了自己过去15年尝试过的玩具程序项目列表,包括正则表达式引擎、x86操作系统内核、GameBoy/NES模拟器等,并给出了难度和时间预估,以及一些有用的资源。