构建可测试性的 Rust 工程 最近 reddit 上有不少人对 Rust 的工程如何进行组织, 以及如何才能进行更加完善的测试进行了一些讨论. 下面的文章给出了一个 web 服务的例子, 演示了如何来组织 Rust 中的模块, 以及如何让代码更加具有测试性.
Accessibility 是指可访问性,很多时候也被人称为无障碍,之前有人一度认为,只要让盲人人士可以正常访问(操作)Web 应用或 Web 网站,那么该应用就具备可访问性,也意味着无障碍设计做得好。 但这个认知并不准确,我们通常所说的可访问性,更侧重于对用户的“方便性”的考量,即让尽可能多的人使用你的网站。 Accessibility 常常又被称为 A11Y,因为字母“A”与“Y”中间间隔 11 位。A11Y 在国内正在备受关注,许多人使用术语 A11Y 来指代确保网站可访问的审核过程。 那么可访问性的重要性到底如何?如何构建可访问性应用?如何在互动项目中增加可访问性?可访问性的投入是否值得?如何将用户体验贯穿整个产品设计中去?有哪些新标准可以真正适用于当下? ,来共同关注当下用户体验与可访问性的前沿技术实践。
同时现有的线程可以提升系统响应性。 但是在安全性与极限性能上,我们首先需要保证的是安全性。 11.1 对性能的思考 提升性能=用更少的资源做更多的事情(太对了,这才是问题的本质)。 synchronization) 上下文切换increased context switching 线程创建和销毁thread creation and teardown 线程调度scheduling overhead 可伸缩性是指 11.4 减少锁的竞争 减少锁的竞争能够提高性能和可伸缩性。 在并发程序中,对可伸缩性的最主要的威胁就是独占方式的资源锁。 有效性通常难以衡量,通常只能以主观来评估,或者通过被优化的程序的行为来判断是否提高了有效性。 延迟 延迟描述的是完成任务所耗费的时间。延迟有时候也成为响应时间。 可扩展性 这里的可扩展性主要是指程序或系统通过增加可使用的资源而增加性能的能力。
测试的目的 寻找最小的测试向量集去覆盖更多的芯片以及板级的故障 衡量标准:故障覆盖率 2.可测性设计 可测性设计基础 所谓可测性设计是指设计人员在设计系统和电路的同时,考虑到测试的要求,通过增加一定的硬件开销 ,获得最大可测性的设计过程。 目前,主要的可测性设计方法有: 扫描通路测试(Scan) 内建自测试(BIST) 边界扫描测试(Boundary Scan) 可测性设计的优势和不足 3.可测性方法(SCAN、BIST、 Boundary SCAN) 扫描通路测试 Scan 可测试性 Scan的基本概念 扫描测试设计规则 可控制性:把激励施加到被测单元的能力 可观察性:故障传播到原始输出端的能力 扫描测试的基本概念 扫描测试是目前数字集成电路设计中最常用的可测性设计技术 逻辑单元BIST Logic BIST是SoC设计中芯片可测性设计的发展方向。 大多数的ASIC使用基于扫描的DFT技术。对于规模越来越大的芯片来说,扫描测试的策略面临着巨大的挑战。
Android 11 兼容性 本期我们将重点探讨 Android 11 兼容性这一对所有开发者都非常重要的主题。 您可以前往官方网站详细获取可帮助您进行兼容性测试的资源,以及本期所有关于该领域的实用内容和资源! 更轻松的测试和调试 : 为了帮助您测试兼容性,我们将许多非兼容性变更设置为 "可关闭"。这意味着,您可以通过开发者选项或 adb 强制启用或禁用每一项更改。 在 Android 11 中,我们还会将更多此类平台变更添加到新的 兼容性框架 中。 什么是兼容性框架? 您可以使用全新开发者工具,针对包含在兼容性框架内的变更对应用进行测试和调试。 例如,我们已将包含在兼容性框架内的变更设为可切换,您可以通过设备的开发者选项或使用 Android ADB 强制启用或停用单个变更。
因此异步不仅利用底层框架平台的异步性,更重要的是如何做到应用本身的异步性,只有做到了这一点才算是真正的异步。 我想这一点大家应该比较清楚,如果将业务逻辑用存储过程实现,那么就会造成非常差的伸缩性,但是我想说的是及时不用关系数据库的特性,如果我们不能从应用的角度去设计系统,照样会造成很差的伸缩性。 业务对象会触发领域事件,然后最终领域事件监听器调用技术组件完成一些附加操作,采用这种方式,我们还可以采用异步的领域事件,这就使得系统的并发通过JAVA本身的内存锁机制实现,而不是靠原来的数据库的事务隔离性来保证并发安全性 容量规划以及伸缩性探讨会 我们要清楚的认识到当前系统能支持的负载,以及系统中可能存在的性能和伸缩性的瓶颈在哪里,在解决了某一个伸缩性的瓶颈以后,我们就需要关注下一个随着系统不断增加可能带来伸缩性瓶颈的问题 回滚 任何操作都有可能失败,因此我们的系统一定要做好回滚操作,这个回滚操作室广义的回滚,具体可参考“可伸缩性和可用性反模式”。 根源分析 确保能在发生问题的时候找到问题的根源,做到治标治本。
使用这种方法我们可以快速的创建各浏览器表现一致的按钮,免受各种bug困扰,但同时也带来了可访问性问题。 虽然点击一个链接时,通常链接会将我们带至其他地方,但使用辅助工具的用户仍然能够感知到这里是可以点击的(而且功能性链接在现代交互中使用的越来越广泛)。如果使用的是其他元素,就没有那么幸运了。
人为错误, 比如我们的系统依赖外部的配置, 这个时候需要人工手动下发配置, 结果配置缺失或者配置错误导致软件朝着不可预期的方向执行导致数据错乱, 这个时候我们查询数据结果也不对. 2) 可扩展性与可伸缩性 可扩展在我的理解主要包含两个层次, 其一是软件层面, 可扩展意味着我们的软件能够适配业务的变化,也是后面可维护性中要具备可演进性,其有两种模式如下: 另一个可扩展层面就是我们架构部署层面上的可伸缩性, 什么是可伸缩性? 可伸缩性就是在系统面临规模的增长,我们的性能逐步出现瓶颈,比如机器负载增加、耗时增加等, 那么这个时候可伸缩性是指我们可以通过增加资源来让我们的系统恢复到原有的性能水平. 可伸缩性意味着即使负载增加,也有办法保持良好的性能。为了讨论可扩展性,我们首先需要有定量描述负载和性能的方法。我们简要地以推特的主页时间线为例来描述负载,并以响应时间的百分位数作为衡量性能的一种方式。 在一个具有可扩展性的系统中,你可以增加处理能力,以便在高负载下仍能保持可靠性。 可维护性包含很多方面,但本质上是为那些需要与系统打交道的工程和运维团队创造更好的工作条件。
特别要说明的是,QMRR组件是使用Remod框架输出的可复用业务层组件,该组件包含React 业务组件与Redux 相关业务层代码,与传统Page不同的是,使用了Remod内置的connect方法延迟连接到 Reducer 代码全部优化掉 提升开发效率,表格页面开发效率从1天提升到1小时 减少样板代码,CLOC统计模块代码量减少约 15.3% 减少重复代码,CLOC统计项目代码量平均减少约 50.2% 高可维护
在深度学习模型的训练过程中,难免引入随机因素,这就会对模型的可复现性产生不好的影响。但是对于研究人员来讲,模型的可复现性是很重要的。 这篇文章收集并总结了可能导致模型难以复现的原因,虽然不可能完全避免随机因素,但是可以通过一些设置尽可能降低模型的随机性。 1. 常规操作 PyTorch官方提供了一些关于可复现性的解释和说明。 2. upsample层 upsample导致模型可复现性变差,这一点在PyTorch的官方库issue#12207中有提到。 总结 上面大概梳理了一下可能导致PyTorch的模型可复现性出现问题的原因。可以看出来,有很多问题是难以避免的,比如使用到官方提及的几个方法、涉及到atomicAdd的操作、多线程操作等等。 目前笔者进行了多次试验来研究模型的可复现性,偶尔会出现两次一模一样的训练结果,但是更多实验中,两次的训练结果都是略有不同的,不过通过以上设置,可以让训练结果差距在1%以内。
目前而言,ARIA 是唯一一种可以添加可访问帮助或说明文本的方式。 可访问性示意图 注意点1: 官方给出的最佳实践中指出: 与其乱用、错用 aria 属性,那还是不要用的好 role 属性和 aria 属性之间的区别 比如说:
可迭代与迭代器的区别 2. 应用 2.1. 字典dict的迭代 2.2. 字符串str的迭代 3. 判断对象的可迭代性和获得获取迭代索引 3.1. 判断对象的可迭代性 3.2. 参考文献 Python迭代和对象的可迭代性 Python文档整理目录: https://blog.csdn.net/humanking7/article/details/80757533 0. 判断对象的可迭代性和获得获取迭代索引 3.1. 判断对象的可迭代性 由1.2节可知,如果对象类中含有__iter__( )方法或__getitem__( )方法,则称这个对象是可迭代的(Iterable),那么如何判断呢? ({}, Iterable) # 字典dict可迭代 Out[10]: True In [11]: isinstance(996, Iterable) # 整型int 不可迭代 Out[11]:
这篇文章的目的是: 为什么可访问性很重要 使网站可访问 测试可访问性 关于可访问性的错误观念 可访问性影响所有用户,而不仅仅是那些有特定障碍的用户。 这很重要,因为它将您的可访问性概念从“因为只有一些人有X残疾并不重要”转变为“我们需要覆盖所有用户的压力情况”。这有助于其他人更好地了解为什么可访问性如此重要。 Web可访问性的四个关键 最广泛接受的可访问性规则是Web内容和可访问性指南2.0,或简称WCAG 2.0。它们是任何技术界面的通用规则,这也是它们如此受欢迎的原因之一。 测试可访问性 使用一个或多个工具自动测试: 颜色对比 语义HTML 不需要的div元素 翻译文本 ARIA和其他可访问性属性,如标题 自动测试涵盖了至少75%的可访问性问题。 永远不要忘记无障碍 可访问性与数据库管理,应用程序架构,数据安全性或远程镇静剂枪一样重要 - 如果没有它们,它们很快就会分崩离析,可能会火上浇油。
可测试性 关于CPO光引擎的可测试性(testing ability),Broadcom与Marvell都强调了可测试性的重要性,并分享了各自光引擎的测试经验。 可测试性是CPO制造过程中需要解决的首要难题。 而对于传统的可插拔光模块,其FIT的典型值为125左右。CPO与可插拔光模块对可靠性的要求差别还是非常大的。 CPO的可测试性、可靠性、可插拔光学连接器与大批量组装方案,是大家比较关注的方向。虽然每家公司的技术路线目前并不完全一致(未来是否会形成统一标准?),但是涉及到的问题是共性的。 对于可插拔光学连接器的研发,是CPO实现可测试性不可或缺的一环。为了保障CPO的可靠性,采用外置激光器模块也基本成为共识。
# bashtop 历史 bashtop 原创可参考:《一款霸榜 GitHub 的开源 Linux 资源监视器!》 五、bottom bottom[4]是用于终端的可定制跨平台图形进程 / 系统监视器,支持 Linux、macOS 和 Windows。 按向下箭头或j键向下移动 按向上箭头或k键向上移动进程列表 按g键转到进程列表的顶部 按G键移动到列表的末尾 按c键可按 CPU 进行排序 按m键可按内存进行排序 十二、zenith zenith[11 ]是基于 Rust 语言编写的一款具有可缩放的图表、CPU、GPU、网络和磁盘使用的终端图形。 github.com/htop-dev/htop [9] nvtop:https://github.com/Syllo/nvtop [10] vtop:https://github.com/MrRio/vtop [11
一些组件只需要基本的可重用性。 其他人则需要更复杂的技术才能充分利用它们。 我已经确定了6个不同级别的可重用性,但是可能还有更多我错过的地方。 这是有关级别的基本概述。 我即将举行的课程“ 可重用组件 ”探讨了每个组件以及如何充分利用它们。 1.模板化 通过这种技术,我们将其包装在其自己的组件中,而不是到处复制+粘贴代码。 当我们重用该组件(而不是直接使用代码)时,它给我们带来了两个好处: 将来进行更改要容易得多,因为我们只需要在一个地方做 我们不必记住将代码复制到的数十个(或数百个)地方 这是最基本的,也是最经常谈论的可重用性形式 5.扩展 通过适应性和反转性,我们拥有必要的技术,可以最大限度地提高组件的可重用性。 下一步是将这些技术应用于整个组件,以便我们更轻松地扩展其行为。 我们使用命名槽在组件中添加一个或多个扩展点。 这是我遇到的最先进的可重用性应用程序。我用这个技术有很多在我自己的工作。 结论 这是我遇到的6个可重用性级别。 我可能会错过一些,我当然不会说这是一份详尽的清单,但是它足够完整,可以使用。
日常工作中大家经常忽略可访问性测试。今天我们就先聊一聊可访问性测试。 什么是网页可访问性(无障碍): 网络是向所有人开放的,作为一个测试者(也是人),我们有责任检查它是否对所有用户开放。 测试一个web应用程序,以确保每个用户都能轻松地访问网站,这被称为可访问性测试。帮助确保网站在这一领域确实有效的专门测试分支被称为“Web可访问性测试”。 Web内容可访问性指南:这些指南建议了一些方法,可以帮助提高网站的可访问性。 如何衡量网页可访问性? web的可访问性可以通过W3C创建的web内容可访问性准则(WCAG)来衡量。很少有其他部门也制定了自己的指南,但这些指南也遵循了Web无障碍倡议(WAI)指南。 #11)内容缩放:试着缩小图像,检查它是否可读。 自动易访问性测试 随着自动化在测试领域的广泛传播,我们也可以将自动化用于可访问性检查。我们有几个自动化测试工具。
1 问题 ReentrantLock是如何实现可重入性的? 并且在进入锁内之前进行了哪些判断?
尽管如此,他们还是能够修复和防止WebAIM百万报告中强调的许多问题,并避免困扰当今互联网的主要可访问性问题。WebAIM Million report 显然,网络可访问性不仅仅是基础知识。 无论哪种方式, 这是一个可疑的说法, 可以听到接近项目结束时, 他们不考虑网络可访问性的早期阶段...这使得它昂贵! 从一开始,可访问的网站可以是视觉上引人注目的、动画的、有趣的互动网站。优秀的设计师在将包容性和可访问性灌输到开箱即用方面做得非常好。 覆盖物足以确保 Web 可访问性 这更多的是高管和决定购买此类解决方案的人的误解。辅助功能社区的共识几乎是一致的:覆盖不起作用。他们都没有完全工作。 覆盖物是一种自动化技术,旨在提高网站的可访问性。 正如我们在上一节中提到的,Web 可访问性没有一刀切的解决方案。而这正是叠加试图成为。 事情可能会改变。
可重入函数是并发编程中必须要考虑的问题,否则代码就会有隐患,更糟糕的是这些隐患往往只能在特定场景下才能复现。 拓展: 一个函数所谓的可重入性,是在多线程的语境下的概念:一个函数如果同时被多条线程调用,他返回的结果都是严格一致的,那么该函数被称为“可重入”函数(reentrance funciton),否则被称为 从这点出发,如果你想要写一个线程安全的可重入函数的话,只要遵循以下原则就行了: A) 不使用任何静态数据,只使用局部变量或者堆内存。 B) 不调用上表中的任何非线程安全的不可重入函数。