GitHub组织信息抓取脚本
这套脚本用于抓取GitHub组织信息,最终生成一个TSV文件,包含组织名称、URL、位置和部分仓库的星标数。`get_all_orgs.sh`脚本获取所有GitHub组织列表;`get_orgs_tsv.py`脚本抓取每个组织的数据并输出TSV;`sorry.sh`脚本用于处理GitHub的限流策略,需要用户手动重置IP地址。
这套脚本用于抓取GitHub组织信息,最终生成一个TSV文件,包含组织名称、URL、位置和部分仓库的星标数。`get_all_orgs.sh`脚本获取所有GitHub组织列表;`get_orgs_tsv.py`脚本抓取每个组织的数据并输出TSV;`sorry.sh`脚本用于处理GitHub的限流策略,需要用户手动重置IP地址。
一款实验性的Python编辑器在Windows和MacOS上运行良好,但在Linux系统上的兼容性则取决于LibreOffice的安装方式。通过软件包管理器安装的LibreOffice版本可以正常工作;而通过snap包或Flatpak安装的版本则可能需要额外安装Flatpak软件包才能支持该编辑器。详情请参考LibrePythonista Flatpak Editor Wiki。
这篇博文详细介绍了如何在Proxmox虚拟化环境中安装Windows NT 4 Server的完整过程。文章不仅提供了详细的VM设置参数,包括选择合适的CPU类型、内存大小、SCSI控制器以及网络适配器等关键步骤,而且还解决了安装过程中遇到的常见问题,例如SCSI驱动程序的安装、鼠标驱动程序的配置以及高分辨率显示的支持等。作者循序渐进地引导读者完成整个安装过程,并附带了高清截图,方便读者操作。最终,读者可以成功安装并运行一个功能完善的Windows NT 4 Server虚拟机,体验复古的Windows操作系统。
作者尝试将一个用于玩“乞丐我的邻居”牌游戏的C++程序移植到GPU上进行加速。起初,GPU性能远低于CPU。通过Nvidia Nsight Compute工具分析,作者发现线程发散和内存访问速度是瓶颈。通过将算法转换为状态机结构,并使用查找表和共享内存优化,最终实现了30倍的性能提升,达到每秒1亿次游戏处理。文章详细描述了优化过程和遇到的挑战,对GPU编程实践具有参考价值。
本文反驳了“不要重新发明轮子”这一常见建议。作者认为,动手实践、重新创造已有的工具(例如协议、加密算法或Web服务器),是深入理解其底层原理的最佳途径。通过亲自动手实现一个简单的版本,即使不完美,也能帮助我们更好地学习,并发现现有方案的不足之处,最终推动技术的进步。这不仅适用于计算机科学领域,也适用于任何技术领域。作者鼓励读者勇于尝试,从小的实验开始,通过不断迭代,最终获得深刻的理解和实践经验。
嵌入式系统并非完美无缺,偶尔会崩溃。为了分析和记录这些崩溃,我们需要一个可以在重启之间存储信息的持久化存储。Ramoops正是为此而生的一个解决方案,它利用RAM预留区域存储内核oops、内核控制台输出和用户消息。虽然RAM数据在断电后会丢失,但它比闪存更快,且在CPU运行时几乎总是可用。文章详细介绍了如何在基于Toradex Apalis iMX8QM的系统中配置和使用Ramoops,包括修改设备树、编译内核以及读取pstore中的日志文件等步骤,并演示了如何利用Ramoops记录内核恐慌和用户消息,从而帮助开发者诊断系统崩溃原因。
程序`runtabloid`在处理不同程序时展现出惊人的性能差异。运行`prog`程序时,计算速度极快,直接输出结果110。然而,运行`fibo`和`fibo2`程序(均为计算斐波那契数列)时,耗时却分别长达27.589秒和56.749秒。这其中隐藏着怎样的秘密?是算法效率不同,还是程序设计差异导致了如此巨大的性能差距?进一步分析代码和执行流程或许能揭晓答案。
Firefox 浏览器 138 版本对地址栏进行了重大升级,提升了搜索和浏览效率。新地址栏允许用户直接选择搜索引擎,搜索关键词保留在地址栏中,方便修改和重复搜索。此外,用户可以使用关键词(如@bookmarks,@tabs)搜索标签页、书签和历史记录,并直接在地址栏执行“清除历史记录”等操作。地址栏还显示更简洁的URL,并清晰提示网站安全状态。此次升级旨在提升用户体验,让 Firefox 成为一个更强大、更便捷的浏览器。
本文汇集了多位资深工程师关于在日常工作中使用大型语言模型(LLM)的经验分享。他们摒弃了LLM的炒作和流行语,专注于实际应用。文章介绍了两种主要的LLM使用技巧:“第二意见”和“一次性调试脚本”,并强调了记录提示词的重要性,以及如何将LLM作为辅助工具提升效率,而非依赖其成为万能解决方法。资深工程师们分享的经验,为希望在日常工作中高效利用LLM的开发者提供了宝贵的参考。
arXivLabs是一个允许协作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv的开放性、社区性、卓越性和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与坚持这些价值观的合作伙伴合作。如果您有想法可以为arXiv社区增值,请了解更多关于arXivLabs的信息。
最近,GitHub Copilot在微软.NET运行时提交代码的尝试以喜剧性的失败告终。Copilot不断提交错误代码,人类程序员不得不一次又一次地纠正其错误。这引发了人们对AI取代程序员的讨论。文章指出,一些公司利用AI作为裁员的借口,而非承认自身规划失误。然而,实际情况是,AI能提升效率,但仍需人类程序员处理复杂问题。文章建议程序员精通AI工具,记录AI无法处理的复杂问题,并公开分享经验,以展现人机协作的优势。
F2是一个跨平台的命令行批量重命名工具,它以其速度快、安全性高而著称。它默认进行试运行,让你在执行前预览重命名效果。F2支持使用文件属性(如图片的EXIF数据或音频文件的ID3标签)进行更灵活的重命名,并提供字符串替换和正则表达式等多种功能。它能自动解决命名冲突,并支持撤销操作。Go开发者可以使用`go install github.com/ayoisaiah/f2/v2/cmd/f2@latest`安装,其他用户可以下载预编译二进制文件。
far (Find And Replace) 是一款快速灵活的命令行工具,用于在文件和文件夹中搜索和替换文本。它支持目标特定文件、目录或通配符模式,并具有智能大小写匹配功能(例如,Foo → Bar,FOO → BAR),灵感来自Sublime Text的查找和替换功能。安装简单,只需克隆GitHub仓库并编译即可使用。例如,`far --find "Foo" --replace "Bar" --target "./src/**/*.rs"` 即可在src目录下所有.rs文件中将"Foo"替换为"Bar"。该工具使用Apache-2.0许可证,欢迎贡献代码和提出改进建议。
Red Hat发布了备受期待的Red Hat Enterprise Linux 10,带来了诸多令人兴奋的特性。它内置了AI驱动的助手Lightspeed,简化了系统管理;强化了安全性,支持后量子密码学;采用新的镜像模式,简化了容器的构建和维护;升级了开发工具链,包括Python、Ruby、Node.js等最新版本;并改进了安装程序和Web控制台。总而言之,RHEL 10 是一款面向未来,兼顾安全、易用性和开发效率的企业级Linux发行版。
厌倦了AI编码助手因卡住的命令循环而中断工作?Terminator,一款强大的AppleScript驱动的终端会话管理器,可以解决这个问题!它通过在独立的终端会话中运行命令来实现进程隔离,从而保持AI助手(如Cursor)的响应性,即使遇到卡住的命令。Terminator能够创建和管理持久终端会话,隔离命令执行,智能地中断繁忙的进程,并提供可靠的会话状态管理。通过简单的命令,你可以轻松地训练你的AI助手使用Terminator,从而提高效率并避免令人沮丧的工作流程中断。
作者痛斥NumPy在高维数组操作上的繁琐和低效,特别是其复杂的广播和索引机制,导致程序员需要不断思考数组形状和函数行为。为此,作者提出了DumPy,一个简洁的数组语言,通过引入循环和索引的语法,并将其编译成向量化操作,从而实现GPU加速,并避免了NumPy中因避免循环而产生的复杂性。DumPy的核心思想是将维度映射到标签,并利用JAX的`vmap`函数进行向量化计算,从而简化代码,提高效率。作者通过几个例子对比了DumPy、NumPy、JAX和纯循环的性能,结果显示DumPy在简洁性和效率上都表现出色。
SuperUtilsPlus是一个强大的JavaScript实用工具库,它在性能、TypeScript支持和开发者体验方面超越了Lodash。它支持ES2020+,具有完整的ESM和CommonJS支持,并且是树状摇动的,只导入所需内容。SuperUtilsPlus包含比Lodash更多的实用函数,并针对速度和效率进行了优化,兼容浏览器和Node.js环境。其功能涵盖数组操作(如chunk、flatten、groupBy)、对象操作(如get、deepClone)、字符串操作(如camelCase)、函数操作(如debounce)以及类型检查等,并提供完整的TypeScript类型定义,确保类型安全。
lnk 是一款轻量级的命令行工具,用于管理你的点文件(dotfiles)。它将你的点文件移至 ~/.config/lnk 目录,并创建符号链接到原来的位置,让你可以使用 Git 来管理这些文件,而无需手动处理繁琐的符号链接创建和冲突解决。lnk 支持多种安装方式,包括 curl、Homebrew 和手动下载,并具有友好的命令行界面,方便用户添加、删除、同步和管理点文件。它还支持从现有 Git 仓库导入点文件,并提供多种功能来处理文件移动、相对符号链接和冲突等问题,让你的点文件管理变得更加简单高效。
Carta前CTO总结了两年任职经验,分享了在工程策略、大语言模型(LLM)应用和组织管理方面的深刻见解。他提到改进自身工作方式,从高层次抽象转向深入细节;撰写了关于工程策略的书籍;分享了在Carta成功应用LLM的经验,并将其用于解决内部流程和开发新产品;介绍了“导航员计划”,提升了高级工程师的参与度;最后,他总结了控制工程成本的策略,以及如何向董事会解释研发投资的方法。
本文批判了根因分析(RCA)在复杂系统故障分析中的局限性,认为其基于错误的因果链模型,无法有效应对复杂系统中多因素交互导致的故障。作者提出了韧性工程(RE)模型作为替代方案,该模型关注系统各组件间的交互作用,而非单一原因。RE模型认为系统总是存在大量潜在故障,成功在于系统的适应能力和容错性,通过理解系统如何适应和应对故障,而非简单地消除故障根源,才能持续改进,提升系统韧性。
本文深入探讨了代数效应(effect handlers)在编程语言中的应用。代数效应是一种强大的机制,允许将异常、生成器、异步操作等多种语言特性以库的形式实现,并提升代码的可组合性。文章通过Ante语言的示例代码,展示了如何用代数效应实现异常处理、生成器和协程,以及如何利用它进行依赖注入、清理API设计、替代全局变量等。此外,代数效应还能提升代码纯度,增强可重放性和安全性。虽然存在一些效率问题,但随着编译技术的进步,代数效应有望成为未来编程语言的核心特性。
Mermaid.js 是一个基于 JavaScript 的图表工具,它使用类 Markdown 语法,让你轻松创建流程图、甘特图、状态图等各种图表,并直接嵌入文档中。它解决了文档更新滞后的难题,即使是非程序员也能快速上手。Mermaid 支持多种图表类型,并与 GitHub 等多种应用集成,大大提高了文档效率。同时,它还提供了沙盒 iframe 功能,提升了安全性。
VS Code 1.21 版本重写了文本缓冲区,大幅提升性能和内存效率。原先基于行的数组实现,在大文件(例如1370万行)下容易导致内存溢出。新实现采用Piece Tree结构,它由多个缓冲区和红黑树组成,有效降低内存占用,并优化了文件打开和编辑速度。虽然查找特定行速度略逊于旧实现,但在实际使用中影响微乎其微。这次重构也避免了原生C++实现带来的性能损耗,证明了巧妙的数据结构和算法设计的重要性。
三十年前,Java横空出世,其“一次编写,到处运行”的承诺给开发世界带来了新鲜空气。尽管“编写一次,到处测试”的现实略有出入,但Java迅速成为企业级应用的支柱。它经历了与微软的官司,也见证了自身流行度的波动,如今仍在TIOBE排名中占据前列。然而,甲骨文对Java的商业化策略引发争议,但开源替代方案的存在确保了Java的持续活力,使其在迈向第四个十年之际依然保持着强大的生命力。
本文探讨了持久化执行引擎(如Temporal)的演进历程,从早期的数据库事务、分布式事务以及容错型RPC/微服务架构入手。作者分析了Jimmy Bogard的“六行代码的失败”案例,指出传统方法在处理跨服务函数调用时面临诸多挑战,例如事务回滚和重试机制。文章回顾了分布式事务(如两阶段提交协议)的局限性,并探讨了Java世界中JSR-95(活动服务)以及Web服务标准(如WS-AtomicTransaction)的尝试,最终指出这些标准未能广泛应用。作者进一步分析了近年来兴起的微服务架构和相应的容错机制,以及事件溯源、编排与编排等概念。最后,文章比较了Temporal、Restate、DBOS等现代持久化执行引擎的差异,包括其工作模式、数据存储方式以及与Serverless架构的结合等,并指出持久化执行引擎在解决分布式系统可靠性问题上的重要作用。
本文介绍了一种名为“transwedge积”的新运算,它可以将几何积完全分解为外代数的基本运算:外积、左右补和度量应用。作者证明,transwedge积可以生成从外积到内积(收缩)的各种乘积,并能替代交换子积,从而更简洁地计算几何积。这不仅适用于三维空间,也适用于更高维度的几何代数,并在共形几何代数中具有实际应用,例如计算正交相交的圆。
arXivLabs是一个开放平台,允许协作者直接在arXiv网站上开发和分享新功能。参与其中的个人和组织都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能够提升arXiv社区的价值,那就来了解一下arXivLabs吧!
一位程序员在日复一日的代码编写中迷失了自我,他感到自己越来越像一台冰冷的机器,麻木地处理着成千上万行代码。他怀念起当初编程的乐趣,那份对代码的热爱与理解。于是,他决定回归初心,开始自己动手制作计算机、操作系统和编程语言,即使这看起来毫无意义,但他决心重拾这份对编程的热爱,再次成为一名真正的“机械师”。
作者详细介绍了如何利用Guix系统和home-xdg-mime-applications-service-type服务,将Emacs的dired模式配置为默认的文件管理器。通过创建xdg-desktop-entry文件并将其与inode/directory MIME类型关联,实现了点击目录即可用Emacs dired模式打开的功能。文章还提供了其他MIME类型的配置示例,方便用户扩展功能。