2019-03-02 12:00:00
最新一期《多语言开发者播客》第25集聚焦于双重认证(2FA)及其在Web应用中的实施。本期节目邀请到Yubico解决方案架构师Luke Walker,讨论了2FA的多种方法,包括短信、推送通知、基于时间的单次密码、U2F和FIDO2等。节目可在各大播客平台上收听,并鼓励听众在评论区提出关于2FA的疑问,以获得更深入的解答。
2019-03-02 12:00:00
最新一期《多语言开发者播客》第25集聚焦于双重认证(2FA)及其在Web应用中的实施。本期节目邀请到Yubico解决方案架构师Luke Walker,讨论了2FA的多种方法,包括短信、推送通知、基于时间的单次密码、U2F和FIDO2等。节目可在各大播客平台上收听,并鼓励听众在评论区提出关于2FA的疑问,以获得更深入的解答。
2019-03-01 22:09:26
在纽约生活,作者对金融行业有着天然的兴趣。他提到自己擅长识人,并从过去的错误中学会了如何避免轻信他人。作者强调信任和诚信的重要性,认为在任何领域,领导者都必须具备诚信和良好的行为记录。他在金融行业的工作经历让他注意到职场中缺乏信任,并认为透明度是建立信任的关键。作者建议领导者应区分何时需要保密,何时可以透明地分享信息,以促进团队信任和问题解决。通过这次体验,作者对其他行业的工作方式有了更深的了解,并表示未来可能会尝试更多不同的工作。
2019-03-01 21:00:00
近期,作者发布了React Hooks的稳定版本和首个React网站翻译,感到非常兴奋。然而,这也带来了压力,因为作为项目负责人,作者需要关注Hooks的最佳实践,并担心用户可能使用错误模式。作者分享了个人缓解压力的方法,包括限制咖啡摄入、避免晚间争论、注意饮食和睡眠习惯等。作者强调,在追求解决问题的同时,也要注意保持身心健康,并感谢身边能够帮助自己回归正轨的人。
2019-03-01 21:00:00
隐藏滚动条虽然有时在实现滚动效果或模态窗口时有用,但可能会影响可访问性和用户体验。尽管如此,在特定情况下,如需隐藏滚动条,可以使用以下代码:`scrollbar-width: none;` 和 `-ms-overflow-style: none;`,同时针对 Webkit 浏览器,还可以通过 `body::-webkit-scrollbar` 来进一步控制滚动条样式。此方法不仅适用于 `body` 元素,也可应用于其他元素。
2019-03-01 11:15:42
Slack不仅可以作为沟通工具,还能作为身份提供者,为其他应用提供用户认证。它通过Oauth2协议实现,允许控制用户权限和访问特定频道。对于已有Slack团队且未使用其他身份管理系统的组织,Slack是其他应用的理想信任源。文章还提及了在Bergen的Boosterconf研讨会可以了解更多相关信息。
2019-02-28 21:00:00
本文探讨了在Elixir中使用`++`操作符连接列表的风险。文章通过一个示例函数,展示了使用`++`可能导致性能问题,并提出了几种改进方案。首先,通过将`++`操作顺序反转并使用`Enum.reverse`,显著提高了性能。然而,对于包含大数字的短列表,原始实现反而更优。文章还尝试了不使用`++`的方法,但效果不佳。最后,通过结合`Enum.map`和`Enum.flatten`,找到了一个性能较好的解决方案。总结来说,使用`++`时需谨慎,应根据具体情况选择最佳实现方式,并通过基准测试来验证性能。
2019-02-28 21:00:00
Kubernetes的发布周期为每季度一次,没有长期支持版本(LTS)。其快速发布节奏是其在分布式基础设施领域占据主导地位的关键因素。Kubernetes社区由多个特殊兴趣小组(SIGs)组成,这些小组负责测试和持续集成/持续部署(CI/CD)系统,确保发布流程的可靠性。Kubernetes的版本发布遵循每季度一次的节奏,而API版本则不断更新和改进。尽管没有LTS版本,但社区通过持续更新和测试来确保旧版本的安全性和稳定性。对于希望使用Kubernetes的企业,选择合适的平台和供应商至关重要。
2019-02-28 21:00:00
本文探讨了C#是否是一种低级语言。作者通过将C++代码逐行转换为C#代码,发现两者在语法上存在一些差异,但C#能够提供类似的功能。文章指出,C#通过诸如`ref`关键字、值类型、unsafe代码、托管指针、Span<T>等特性,使得开发者能够进行低级编程。尽管C#在某些方面不如C++或Rust等语言直接,但它提供了丰富的工具和功能,允许开发者实现类似低级编程的效果。
2019-02-28 19:43:10
本文介绍了如何利用Azure Pipelines在Azure DevOps上设置iOS应用的持续集成系统。文章详细说明了配置步骤,包括选择macOS虚拟机、使用Xcode任务构建项目、安装第三方依赖、打包应用以及存储构建产物。通过这种方式,可以自动构建iOS应用,提高开发质量,并确保代码质量。
2019-02-28 09:53:26
2019年2月,Node.js发布了安全更新,针对所有活跃的版本线。更新包括对Node.js安全漏洞的修复,以及Node.js 6和8版本的OpenSSL升级,其中包含对中等严重性安全漏洞的修复。然而,对于“输入误解释”(CWE-115)漏洞的修复被暂时保留,因为其严重性较低。此外,还引入了一个新的CVE,针对Node.js 6的一个被分类为拒绝服务(CWE-400)的漏洞。所有受支持的版本线都存在漏洞,建议用户尽快升级到最新版本。
2019-02-28 09:47:37
Node.js发布了v11.10.1版本,这是一个安全更新版本。主要修复了CVE-2019-5737漏洞,该漏洞涉及Slowloris HTTP拒绝服务攻击。更新中包括了对HTTP和HTTPS连接中“Slowloris”攻击的进一步预防措施。提供了多种安装包和二进制文件,适用于不同操作系统和架构。用户应查阅安全发布摘要以了解详细信息,并下载适合自己系统的更新。
2019-02-28 09:47:33
Node.js发布了v10.15.2版本,这是一个安全更新版本。主要修复了CVE-2019-5737漏洞,该漏洞涉及Slowloris HTTP拒绝服务攻击。此次更新包括对Windows、macOS、Linux等不同操作系统的安装包和二进制文件,以及源代码。用户应尽快更新以增强系统安全性。
2019-02-28 09:47:28
Node.js发布了v8.15.1版本,这是一个安全更新版本。该版本修复了CVE-2019-5737(Slowloris HTTP拒绝服务)和CVE-2019-1559(OpenSSL 0-byte记录填充预言机)等漏洞。同时,OpenSSL已升级到1.0.2r版本,解决了CVE-2019-1559漏洞。用户可以通过提供的链接下载不同平台的安装包和二进制文件。
2019-02-28 09:47:20
Node.js发布了v6.17.0版本,这是一个安全更新版本。该版本修复了多个安全漏洞,包括CVE-2019-5739、CVE-2019-5737和CVE-2019-1559。更新中特别提到了对OpenSSL的升级,解决了0-byte记录填充预言机攻击的问题。同时,还改进了HTTP连接的稳定性,防止了因长时间保持活跃状态而导致的拒绝服务攻击。该版本提供了多种安装包和源代码下载链接,方便用户进行升级。
2019-02-27 22:09:26
作者通过体验政府、医疗和资本主义三个领域的日常工作,探讨了不同组织结构和文化。在政府中,他赞赏了美国数字服务项目(USDS)的成就导向和扁平化管理,认为其通过GitHub等现代工具推动政府现代化。在医疗领域,他观察到医生与住院医师之间的尊重和团队合作精神,并希望这种开放共享的知识模式能应用于更多领域。作者认为,通过借鉴这些领域的成功经验,政府、医疗和资本主义都可以变得更加开放和高效,从而改善社会。
2019-02-27 21:00:00
Jane Street公司赞助了今年的MakeMIT黑客马拉松,并为获胜者打造了具有匠心的奖品——手工制作的68键机械键盘。键盘采用定制加工的胡桃木外壳和激光雕刻的黄铜底板,内部使用布朗樱桃MX开关。键盘的制作过程包括设计木制外壳、制作电路板和黄铜底板,以及组装和装饰。Jane Street团队还展示了他们如何使用OCaml编程语言设计黄铜装饰板上的Jane Street标志。整个项目体现了Jane Street对创新和匠心的重视。
2019-02-27 21:00:00
在Jane Street,近年来我们一直在探索机器学习来改进我们的模型。受到AlphaGo和AlphaZero的启发,作者开始了一个个人项目,研究围棋中的神经网络训练。通过与Jane Street的支持,作者进行了一系列实验,发现新技巧将学习速度提高了5倍,某些部分甚至提高了100倍。这些技术不仅适用于围棋,还可能应用于其他领域。实验结果表明,通过适当的训练架构,单个神经网络可以在多种棋盘大小上同时表现出色,并且通过添加得分最大化作为次要目标,可以加速学习并使机器在让子棋局中也能合理地游戏。作者计划在未来几个月内进行更多实验,并在博客文章中分享其他想法和结果。
2019-02-27 21:00:00
作为一名前端开发者,CSS中的`display`属性是日常工作中常用的。本文以实际项目需求为例,介绍了如何使用`display: inline-flex`属性实现一个既具有flex布局特性又作为内联元素的容器。通过在`.c-badge`类上应用`inline-flex`,实现了图标在徽章中的水平和垂直居中。这种方法不仅简洁,而且易于实现,为开发者提供了一种新的布局思路。
2019-02-27 12:00:00
在部署AWS Lambda函数时,可能会遇到GLIBCXX库版本错误,这通常是由于依赖库未使用正确的Amazon Linux版本编译所致。本文通过一个Couchbase Node.js SDK的例子,详细介绍了如何通过在Docker容器中从源代码构建依赖库来解决这个问题。首先,需要在容器中安装必要的构建工具,然后从GitHub安装NPM依赖项,确保使用正确的操作系统和架构。最后,部署到AWS Lambda和API Gateway后,问题得到解决。这为解决类似问题提供了一个有效的解决方案。
2019-02-26 21:00:00
R8优化器能够对类进行编译时操作,例如将类的简单名称作为字符串常量处理。这种优化可以减少运行时开销,尤其是在日志标签等场景中。通过比较使用字符串字面量和`getSimpleName()`方法的字节码,可以看出R8能够将后者替换为前者,从而提高效率。此外,R8还支持在Kotlin中使用内联函数和重新类型化参数来确保`getSimpleName()`始终在编译时调用。然而,这种优化目前仅适用于顶层类型,并且当启用混淆时,可能会增加DEX文件的大小。
2019-02-26 21:00:00
本文探讨了缓存技术在软件工程中的应用,特别是Least Frequently Used(LFU)缓存算法。LFU缓存通过跟踪缓存项的使用频率来决定何时淘汰,适用于访问模式不经常变化的场景。文章详细介绍了LFU缓存的工作原理,包括使用两个双向链表和一个哈希表的数据结构,以及如何实现插入、访问和删除操作。此外,文章还通过Go语言示例代码展示了LFU缓存的实现过程,并讨论了其在特定场景下的优势。
2019-02-26 21:00:00
GoCardless在处理PostgreSQL数据库时,遇到了查询性能问题。通过分析,发现PostgreSQL的查询计划器由于对数据分布的假设不准确,导致查询效率低下。文章详细介绍了如何通过调整统计信息目标、优化数据访问模式等方法来改善查询性能,并强调了理解数据分布和查询计划的重要性。通过这些措施,GoCardless成功提高了数据库的查询效率。
2019-02-26 18:45:39
PogDroid,一款最初由小型团队维护的Twitch应用,在2017年3月经历了重大改版。由于用户数量的增长,团队决定对PogDroid进行投资,包括外观更新和新增重要功能。然而,原有的代码结构混乱,难以支持大规模的重构和新功能添加。为此,团队采用了MVP架构模式,将应用分为数据层、表示层和视图层,以简化代码结构并提高可测试性。通过这种模式,团队在三个月内完成了应用的重构,新增了重要功能,并大幅提高了代码覆盖率。
2019-02-26 15:04:28
本文探讨了在TypeScript中安全访问深层嵌套属性的方法。文章首先介绍了严格空检查(strictNullChecks)的优势和缺点,然后提出使用映射类型来优雅地处理嵌套属性。文章详细解释了如何使用索引类型查询操作符和泛型技术来创建一个类型安全的函数,该函数可以访问任意深度的嵌套属性。此外,还讨论了如何通过定义多个重载来支持不同级别的嵌套,并提供了实际应用示例。总结来说,文章提供了一种在TypeScript中安全访问深层嵌套属性的方法,并介绍了相关的类型系统知识。
2019-02-25 21:00:00
Teleport 3.1版本引入了新的`ca-pin`功能,用于在节点加入Teleport集群时,通过SHA256哈希值验证SSH证书授权中心的身份,从而确保连接的安全性。这一功能借鉴了Kubernetes的`--discovery-token-ca-cert-hash`机制,通过在节点与授权服务器之间建立安全连接,验证证书链的合法性,有效提升了用户的使用体验和安全性。
2019-02-25 21:00:00
为了获得更好的浏览体验,请确保您的浏览器已启用JavaScript。若需要帮助启用,请点击链接获取指导。
2019-02-25 21:00:00
Shamrock Trading Corporation通过采用无服务器架构,成功处理了数十亿美元的交易,无需手动扩展。他们原本的Docker容器在用户量增加时管理困难,经常在周五高峰时段宕机。迁移到AWS Lambda和Serverless Framework后,系统自动扩展,性能大幅提升,成本降低至原来的十分之一。Shamrock正在将更多传统应用迁移到无服务器架构,并利用多云策略,结合AWS和Google的服务,以实现更强大的故障转移和更高的可靠性。
2019-02-25 19:40:00
OpenID Connect因其标准化和广泛采用而具有优势,能够方便地与不同身份提供者集成。以挪威的国家身份提供者ID-porten为例,它几乎完全符合OpenID Connect标准,能够确保用户身份的准确性,但同时也限制了用户信息的获取。尽管如此,对于为挪威人提供政府服务的应用开发者来说,ID-porten是必须的身份提供者,且使用OpenID Connect的相关知识和工具即可轻松集成。
2019-02-25 14:17:23
Redis项目十周年之际,作者Antirez发布了一个名为Gopher协议的实现,旨在为互联网提供一个更简洁、去中心化的文本交流平台。Gopher协议强调文本内容,反对现代互联网的过度控制与复杂化,鼓励用户创建自己的Gopher空间,以更接近早期互联网的交流方式。Redis Gopher的实现简单,仅用100行代码,通过Redis的键值对存储和实时更新内容。作者希望这个项目能吸引更多人加入,共同构建一个不同于现代互联网的社区。
2019-02-25 12:09:26
作者推荐了一系列书籍,分为“浪漫化科技”和“非虚构”两大类。在“浪漫化科技”类别中,推荐了关于计算机历史和科技发展的书籍,如《Soul of a New Machine》、《A People’s History of Computing in the United States》等。在“非虚构”类别中,涵盖了心理学、科学、管理、历史等多个领域,如《Spy the Lie》、《Super Brain》、《The Manager’s Path》等。此外,作者还分享了自己的书架照片,供读者参考。
2019-02-25 12:00:00
本文介绍了如何使用Node.js和MongoDB开发GraphQL API。文章首先阐述了GraphQL相较于REST API的优势,如减少不必要的端点和数据量。接着,作者展示了如何创建一个Node.js项目,并使用Express.js和Mongoose连接MongoDB。文章重点讲解了如何设计GraphQL查询和突变来检索和操作MongoDB中的数据。最后,作者总结了使用GraphQL和MongoDB进行API开发的简单示例,并鼓励读者进一步学习。
2019-02-25 09:19:00
本教程由Shopify内部开发,后公开分享,旨在帮助开发者构建GraphQL API。教程涵盖了多个主题,包括简化一致性哈希算法、JavaScript在Chrome中的加载优先级、编写代码的原则和指南,以及何时考虑使用新的编程语言或领域特定语言(DSL)。此外,还介绍了多个编程语言和工具,如Ruby的feature flipping库、Go的murmur3哈希库、Rust的fuzzy-search库等,以及容器化工具footloose、暴露本地端点的inlets和特征标志解决方案flipt。总结来说,这是一份关于现代Web开发技术和工具的实用指南。
2019-02-25 06:58:53
OpenID Connect因其标准化和广泛采用而受到青睐,它允许开发者轻松地将工具适配于不同身份提供者,如Google、Microsoft Active Directory或挪威的ID-porten。尽管该协议对开发者来说可能显得复杂,但实际上它非常易于掌握。文章强调了使用Microsoft Azure Active Directory作为OpenID Connect提供者的优势,如验证用户与特定组织的关联,增强信任度。此外,文章指出,开发者无需管理员介入即可进行应用注册,但组织管理员可以进一步授权应用获取用户详细信息,并要求使用多因素认证。开发者可通过OpenID Connect协议轻松集成,并期待作者未来关于ID-porten和Slack等身份提供者的文章。
2019-02-25 00:00:00
掌握Git的重要性不容忽视,它不仅能提高工作效率,还能让团队协作更加顺畅。文章强调了编写良好的提交信息、保持每个提交自包含、以及利用Git的历史编辑功能等关键点。此外,还提供了一些实用技巧,如阅读man页面、掌握rev选择、灵活使用分支等,以帮助读者更高效地使用Git。
2019-02-24 21:00:00
十年前,作者在其朋友的博客上发表了关于Internet Explorer 6 CSS黑客技巧的文章。文章回顾了当时针对IE6浏览器的一些CSS兼容性问题,如宽度计算、文本和图像消失、最小宽高设置、PNG透明度、hover行为和双倍边距等,并提供了相应的解决方案。如今,随着浏览器和前端工具的进步,这些问题已不再是难题,但回顾这些历史问题,作者感慨于浏览器和前端工具的巨大发展。