2018-01-27 00:00:00
关于Wayland窗口装饰的责任归属,GNOME提出了一些有误的假设,并声称已达成共识。然而,作者指出CSD存在实际问题和长期被忽视的挑战,如客户端和GUI工具包之间缺乏一致性、无法管理行为异常的客户端等。作者强调,尽管GNOME坚持己见,但KDE和Sway等团队已开发出一种Wayland协议扩展,允许合成器和客户端协商使用何种装饰,并承诺支持服务器端装饰。
2018-01-27 00:00:00
关于Wayland窗口装饰的责任归属,GNOME提出了一些有误的假设,并声称已达成共识。然而,作者指出CSD存在实际问题和长期被忽视的挑战,如客户端和GUI工具包之间缺乏一致性、无法管理行为异常的客户端等。作者强调,尽管GNOME坚持己见,但KDE和Sway等团队已开发出一种Wayland协议扩展,允许合成器和客户端协商使用何种装饰,并承诺支持服务器端装饰。
2018-01-26 21:36:35
近日,有报道称数千个WordPress网站受到恶意软件影响,窃取用户输入的登录凭证并挖掘加密货币。然而,考虑到WordPress在全球网站中的巨大份额(约29.3%),这一影响实际上微乎其微,仅占所有WordPress网站的0.004%。文章指出,WordPress的扩展性是其优势,但同时也带来了安全风险,因为许多第三方插件可能存在漏洞。文章强调,用户应谨慎选择插件和主机服务,以避免安全风险。
2018-01-26 12:00:00
本文介绍了如何使用Vue.js框架和JavaScript生成DigiByte DGB数字货币的冷存储纸钱包。作者详细讲解了如何创建Vue.js应用程序,包括下载Vue.js、qrcode.js库和DigiByte JavaScript库,并展示了如何使用这些库生成包含私钥、公钥和地址信息的纸钱包,同时生成相应的QR码。文章还提供了完整的代码示例,并强调了在生成钱包时断开网络连接的重要性,以确保安全性。
2018-01-26 05:00:00
Re:Coded是一个致力于为伊拉克和土耳其难民营中的难民提供编程教育的非营利组织。他们利用Repl.it平台,一个轻量级的在线IDE和REPL,来辅助教学,包括直播编码、创建个性化作业等。Repl.it的易用性、便携性和低网络开销,使其成为Re:Coded教学工具中的重要组成部分。通过Repl.it,难民学生能够轻松地学习编程,并在有限的网络条件下进行实践。
2018-01-25 21:00:00
苹果在Xcode 7中引入了自动UI测试,这为开发者带来了便利,尤其是解决了自动化测试中常见的不可靠问题。文章以SoundCloud为例,介绍了如何通过自动记录和回放网络响应来消除由实时数据引起的测试不可靠性。通过创建一个自定义的URLSession,开发者可以在测试过程中使用JSON文件来模拟网络响应,从而避免因外部因素(如网络连接问题或数据变化)导致的测试失败。这种方法不仅简化了测试过程,还提高了测试的稳定性。
2018-01-25 19:03:28
本文分享了作者在使用ng-packagr创建NPM Angular包时的经验。作者强调了理解Angular包格式和遵循最佳实践的重要性,并介绍了ng-packagr工具的使用。文章指出,在构建依赖包时,需要正确生成元数据以支持AOT编译,并解决路径引用问题。此外,还讨论了在实现Module的forRoot方法时,应避免动态提供者列表,以确保静态元数据生成。
2018-01-25 15:02:35
Localytics公司强调数据驱动决策,其工具Exploranda旨在简化数据探索过程。Exploranda通过三个步骤——获取原始数据、转换数据以突出感兴趣的特征、以有用方式显示数据——帮助用户进行数据探索。该工具特别适用于处理非预见性问题或回答任意问题,如分析Elasticsearch集群的IO统计信息。Exploranda旨在降低数据探索的成本,鼓励用户提出问题并探索数据,以发现意外和有趣的事物。目前,Exploranda处于beta测试阶段,支持从AWS API和HTTP(S)请求获取信息,未来还将支持shell和SSH命令。
2018-01-25 15:00:34
Redis开发者Antirez正在全力推进Streams功能,这是Redis社区中非常期待的特性。目前,Streams的核心功能已基本完成,并已合并到“unstable”分支。Antirez正在实现消费者组的规范,并已完成了部分代码。由于RDB格式的重大变化,Streams将作为Redis 5.0的一部分发布,预计两个月后即可用于生产环境。同时,Antirez也在准备相关文档,以便在发布候选版阶段支持用户测试。
2018-01-25 14:18:42
2018年3月2日至4日,WordCamp Oslo 2018将在奥斯陆举行。活动分为三天:周五的“贡献者日”将进行工作坊,共同改进WordPress的各个方面;周六的“会议日”将有多场主题演讲,涵盖开发、商业、设计等多个领域;周日则是“社区日”,参与者可以参与户外活动,增进交流。门票仅需300挪威克朗,包括周五和周六的午餐。
2018-01-25 12:00:00
《Polyglot Developer》博客欢迎开发者社区投稿,文章以Markdown格式撰写。Markdown语法简单,易于上手,支持标题、加粗、斜体、代码块、引用、列表、链接和图片等功能。文章还介绍了如何在Markdown中插入YouTube视频和SlideShare演示文稿。总结来说,Markdown是撰写博客文章的便捷工具,适合所有开发者使用。
2018-01-25 11:18:06
2018年StackShare Awards评选出了年度最佳开发者工具,涵盖了多个类别。其中,Airbnb的Lottie库成为年度新工具,它允许应用实时渲染Adobe After Effects动画。React Sketchapp和Element等工具也备受关注。在应用与数据工具类别中,JavaScript、nginx和Bootstrap等工具表现突出。在实用工具类别中,Postman和SendGrid等工具受欢迎。DevOps类别中,GitHub、GitLab和Docker等工具占据领先地位。此外,Slack、Trello和Asana等工具在商业工具类别中表现优异。
2018-01-25 11:10:50
本文介绍了新开发的GC Team Manager应用中的同步系统。系统采用后端发布/订阅服务,通过异步轮询同步和发布/订阅同步两部分实现。异步轮询同步算法能够处理乱序消息,并通过Redis存储更新。发布/订阅同步则利用Google的Firebase Cloud Messaging服务,实现设备即时接收更新。整个系统设计考虑了性能、可靠性和易用性,确保了数据同步的准确性和实时性。
2018-01-25 11:10:50
本文介绍了新开发的GC Team Manager应用中的同步系统。系统采用后端发布/订阅服务,通过异步轮询同步和发布/订阅同步两部分实现。异步轮询同步算法能够处理乱序消息,并通过Redis存储更新。发布/订阅同步则利用Google的Firebase Cloud Messaging服务,实现设备即时接收更新。整个系统设计考虑了性能、可靠性和易用性,确保了数据同步的准确性和实时性。
2018-01-24 21:00:00
为了获得更好的浏览体验,请确保您的浏览器已启用JavaScript。若需要帮助启用,请点击链接获取指导。
2018-01-24 17:52:42
GameChanger推出的新应用GC Team Manager,旨在帮助青少年体育社区进行沟通、协调和组织。文章深入探讨了该应用的核心功能——同步系统。同步系统确保所有设备拥有共享的、最新的数据视图,避免用户间数据冲突,简化数据整合。文章分析了四种同步方案:即时加载、异步轮询、目标推送通知和发布/订阅模型,并最终选择了发布/订阅模型,因为它提供了近实时的数据一致性、更低的后端负载、更强的交付保证,并且易于实现。
2018-01-24 17:52:42
GameChanger推出的新应用GC Team Manager,旨在帮助青少年体育社区进行沟通、协调和组织。文章深入探讨了该应用的核心功能——同步系统。同步系统确保所有设备拥有共享的、最新的数据视图,避免用户间数据冲突,简化数据整合。文章分析了四种同步方案:即时加载、异步轮询、目标推送通知和发布/订阅模型,并最终选择了发布/订阅模型,因为它提供了近实时的数据一致性、更低的后端负载、更强的交付保证,并且易于实现。
2018-01-24 10:07:00
本文介绍了如何扩展C++11中的运行时反射系统,使其支持额外的内置类型,如`double`和`std::unique_ptr<>`。通过定义类型描述符和模板特化,系统可以处理不同类型的对象。作者展示了如何通过宏和模板来创建类型描述符,并解释了如何使用这些描述符来反射和序列化对象。此外,文章还讨论了如何使用Python脚本来自动生成反射宏,以提高开发效率。该反射系统在作者开发的个人游戏引擎中得到了广泛应用,极大地简化了数据管理和序列化过程。
2018-01-24 06:00:00
对于小企业主来说,及时收款对现金流至关重要。文章指出,若收款不及时,企业可能面临财务失控、无利润甚至倒闭的风险。为应对这一问题,企业主应了解自身财务状况,包括盈亏平衡点,并定期监控财务数据。同时,通过优化会计系统和采用如直接借记等支付方式,加快收款速度,降低风险,增强企业韧性。文章还提到,随着更多企业采用数字化系统和直接借记等支付方式,及时收款的情况正在改善,这对企业的生存和发展至关重要。
2018-01-24 02:38:00
我已正式从Blogger迁移至Medium平台,期待在Medium上与大家相见!
2018-01-23 21:00:00
SoundCloud为了解决海量音乐和用户内容的搜索排序问题,采用了自家的PageRank算法——DiscoRank。该算法最初在2012年引入,经过多次升级,现在使用Spark进行分布式计算。新版本的DiscoRank能够在三到五分钟内处理超过7亿节点和150亿边的图,大幅提升了性能和可扩展性。SoundCloud将此算法开源,希望其他应用场景也能从中受益。
2018-01-23 21:00:00
本文介绍了如何通过GitHub团队成员资格使用开源工具简单有效地管理小型团队的SSH凭证。文章提出了一种基于两个原则的方法:1. 使用外部身份系统而非服务器上的公钥来管理SSH基础设施;2. 使用自动过期的SSH证书来限制用户对基础设施的访问时间。文章以Teleport为例,详细说明了如何通过GitHub认证来管理SSH访问权限,并提供了配置步骤和示例。这种方法可以确保当团队成员变动或离职时,其SSH访问权限能够及时被撤销,从而提高安全性。
2018-01-23 21:00:00
设计思维在技术公司中的应用体现在一个紧密的用户反馈循环中,它通过六个步骤——同理心、定义、创意、原型、测试和实施——来快速验证新功能想法。Serverless公司通过这种方式,将设计思维与敏捷工程相结合,以小批量构建新功能,并在开发前进行用户验证。这种方法提高了工作效率,促进了创新,但也存在一些挑战,如结构化流程可能对小型初创公司来说过于繁琐,以及远程团队在时间协调上的困难。尽管如此,Serverless认为设计思维是一个有效的系统,并计划继续使用它,同时进行一些调整和实验。
2018-01-23 19:36:00
近期,作者尝试了Google的deeplearn.js项目,对其新项目的新颖性和清晰的发展路线图表示赞赏。尽管如此,它仍缺少像TensorFlow中的tf.layers和tf.contrib.layers这样的高级功能,这些功能使得TensorFlow的使用变得简单。作者指出,这些功能预计将添加到Graphlayers中,但目前优先级是先修复底层API。为了解决这个问题,作者迅速构建了tf.layers.conv2d和tf.layers.flatten的功能,并在本文中分享。这些功能尽可能地接近TensorFlow中的定义,包括输入张量、过滤器数量、卷积窗口大小、图对象、步长、填充方式、数据格式、激活函数、初始化器等参数。作者还提到,这些功能是在构建一个用于加载数据集、批处理、保存检查点和可视化的工具时编写的,未来将分享更多相关信息。
2018-01-23 12:00:00
Nic Raboy发布了名为《通过示例学习Docker容器化》的新课程,这是他首次涉足非移动应用开发领域。该课程旨在教授学员如何使用Docker创建和部署微服务容器,简化服务器配置,实现从开发到生产的无缝过渡。课程适合有一定Docker和命令行基础的学习者。为感谢订阅者,Nic提供25%的折扣码“POLYGLOT”。课程完成后,学员可留下真实评价。更多课程信息可在网站“在线课程”部分查看。
2018-01-22 21:00:00
在iOS开发中,使用Auto Layout进行视图布局时,可能会遇到约束冲突的问题。文章通过一个简单的例子,解释了当尝试将一个UILabel居中时,为何会出现约束冲突。这是因为UIView的Autoresizing Mask属性与Auto Layout的约束系统不兼容。Autoresizing Mask决定了视图如何调整大小和位置,而Auto Layout则通过约束来控制。为了避免冲突,需要在代码中显式地将UIView的`translatesAutoresizingMaskIntoConstraints`属性设置为false。这样,Auto Layout才能正确地处理视图的布局。文章还解释了Autoresizing Mask的工作原理,并指出在大多数情况下,使用Auto Layout时不需要Autoresizing Mask。
2018-01-22 21:00:00
本文以作者编写一个Golang程序设置提醒器的经历为引,探讨了Golang中如何组织一个包以包含两个或多个可执行文件。文章首先介绍了如何创建一个简单的Golang CLI程序,然后讨论了在单个包中创建多个可执行文件时遇到的问题,如`main`函数的重复定义。作者通过将程序拆分为不同的包并重新组织文件结构,解决了这些问题,并展示了如何使用`go install`命令安装和运行这些程序。此外,文章还介绍了如何将共享代码提取到一个库中,以便在多个命令之间重用。最后,作者推荐了一些关于构建和安装包以及文件结构组织的阅读资源。
2018-01-22 21:00:00
Drivy公司通过使用Rails框架和Rspec测试套件,结合active_model_serializers生成API的JSON输出,并以此作为API文档。通过编写测试用例来确保文档与实际行为同步,任何对序列化器的更改都会导致测试失败,从而强制开发者更新测试。这种方法既保证了文档的实时更新,又提供了单元测试的好处。目前,该解决方案已使用超过一年,并适应了团队的新成员。未来,Drivy计划进一步完善文档,包括添加属性描述和输入参数说明。
2018-01-22 21:00:00
Cerner公司通过其敏捷实践在全球范围内享有盛誉,但公司内部意识到需要进一步深化敏捷思维。为此,Cerner加入了由Steve Denning和Ahmed Sidky领导的敏捷学习联盟(SDLC),与其他领先企业交流最佳实践。通过参与SDLC的现场访问和会议,Cerner从其他成员那里学习到了宝贵的经验,并开始在全球范围内分享其敏捷转型的故事。这些努力不仅提升了Cerner的敏捷实践,还推动了全球商业敏捷性的发展。
2018-01-22 21:00:00
作者在开发一个应用时,为了快速构建用户界面,选择了Node.js、Express.js和pug.js模板引擎。他放弃了Angular和React等框架,因为它们需要更多的时间和精力来构建。作者认为Node.js是一个很好的原型工具,可以快速生成HTML。他还尝试了将前端和后端使用相同的模板,以避免代码重复。这种方法虽然适用于快速原型开发,但不适合大型应用。作者建议使用集成测试来确保代码的可维护性。
2018-01-22 12:00:00
本文介绍了如何在Node.js中使用Crypto库进行数据加密和解密。作者首先创建了一个新的Node.js项目,并引入了Crypto库。接着,通过创建一个名为Safe的类,实现了数据的同步和异步加密解密功能。在类中,使用了AES算法对数据进行加密和解密。最后,通过一个示例展示了如何使用这个类来加密和解密数据。文章强调了使用加密保护敏感数据的重要性,并提供了实际的应用场景。
2018-01-22 09:19:00
本篇文章涵盖了一系列技术主题,从创建无线互联网服务提供商(WISP)的可行性分析到JavaScript框架的选择,再到Python中的pickle模块的工作原理。文章通过比喻和实例,深入浅出地解释了HTTPS、Java应用内存问题、代码对齐问题、CO₂监测器项目、Elixir语言在加密货币中的应用等复杂概念。总结来说,文章旨在帮助读者理解现代编程和互联网技术中的关键要素。
2018-01-22 03:00:00
本文介绍了如何使用Sinon.js来模拟Passport认证中间件和数据库调用,以便在测试中不实际执行认证流程和数据库操作。文章首先介绍了测试环境搭建和项目结构,然后详细讲解了如何模拟Postgres和Redis数据库调用,以及如何模拟Passport的认证和会话管理。最后,文章通过示例展示了如何使用Sinon来模拟确保用户认证和确保管理员权限的中间件。通过这些方法,可以有效地提高测试效率,避免在测试中依赖外部服务。
2018-01-21 22:00:00
在开发大型应用时,配置管理是必不可少的。Angular 提供了编译时和运行时两种配置方式。编译时配置是指在编译和打包应用时将配置编译进应用中,Angular CLI 已经提供了相应的配置选项。运行时配置则允许在应用运行时动态更改配置,通常通过 HTTP 请求读取配置文件。Angular 提供了 `APP_INITIALIZER` 令牌,可以在应用启动时延迟模块的初始化,从而实现运行时配置。选择哪种配置方式取决于具体需求,编译时配置适合环境固定的场景,而运行时配置则适用于需要动态调整配置的应用。
2018-01-21 21:00:00
在Kubernetes上运行PostgreSQL等状态性应用面临诸多挑战。Kubernetes本身并不了解PostgreSQL的部署细节,可能导致数据丢失。使用Kubernetes StatefulSets可以提供简单部署,但基于文件系统的复制机制存在缺陷。Kubernetes为状态性工作负载提供了基础构建块,但需要专家级知识和技能来构建可靠的运营模型。对于PostgreSQL,建议寻找专注于PostgreSQL和Kubernetes的团队或解决方案,以避免数据丢失。
2018-01-21 21:00:00
我最近发布了一个名为has-tabbed的小型库。这个库原本是我经常在不同项目中复制的代码,我一直认为它太小而不值得独立发布。has-tabbed库通过监听键盘的Tab键来添加CSS类,当用户点击页面任何位置时,该类会被移除。尽管它只做了一件事,但它的存在可以节省时间,并允许他人使用和改进它。这个库旨在提升Web应用的可用性和用户体验,允许开发者在不影响键盘导航用户的情况下,安全地移除鼠标用户的焦点环。代码是开源的,可供大家使用和探索。
2018-01-21 21:00:00
本文探讨了Go语言编译器中的逃逸分析及其优化。文章首先介绍了逃逸分析的概念和重要性,随后详细分析了五个逃逸分析中的缺陷,包括间接赋值、间接调用、切片和映射赋值、接口使用以及未知问题。通过具体的代码示例和性能分析,文章展示了这些缺陷如何导致不必要的内存分配,并提出了可能的解决方案。文章强调,修复这些缺陷将有助于提高Go程序的性能和效率。
2018-01-21 21:00:00
本文列举了多个关于.NET内部机制的博客和书籍资源,旨在帮助读者深入了解.NET的工作原理。文章首先介绍了由非微软员工撰写的博客,特别提到了Sasha Goldshtein的博客。接着,文章提到了《运行时之书》(BotR),这是一套描述CLR和BCL组件的文档,适合有经验的开发者阅读。此外,文章还列出了由微软工程师撰写的博客,如Maoni的垃圾回收器博客等。最后,文章推荐了一些关于.NET内部机制的书籍,包括作者亲自阅读过的书籍和近期推荐的新书。
2018-01-21 21:00:00
Serverless Framework插件众多,本文列举了其中最受欢迎的几个,如Headless Chrome、Serverless Offline、Serverless Webpack等,这些插件能显著提高开发效率。文章还介绍了Serverless团队推荐的插件,如AWS Pseudo Parameters、Domain Manager等,并鼓励开发者贡献自己的插件。
2018-01-21 20:00:00
近日,作者收到了一份区块链项目的工作邀请,尽管薪资优厚,但他还是决定拒绝。作者认为,尽管比特币作为电子现金系统很有趣,但区块链的挖矿过程消耗大量计算资源和能源,且目前很多公司通过ICO发行代币,绕过正规IPO流程,这让他对区块链的现状感到担忧。作者认为,自己不想与当前区块链生态系统的状态产生关联,因此拒绝了这份工作邀请。