NiCad Clone Detector 是一个灵活的基于 TXL 的混合语言敏感 / 文本比较软件克隆检测系统,基于 Chanchal 关于 NiCad 混合克隆检测方法的博士论文,由 James R. Cordy 和 Chanchal K. Roy 实现。
NiCad Clone Detector 是一个可扩展、灵活的克隆检测工具,旨在通过可以轻松嵌入 IDE 和其它环境中的易于使用的命令行工具实现 NiCad 混合克隆检测方法。它将要检查克隆的源目录或指定要执行的规范化和过滤的配置文件作为输入,并提供 XML 格式的输出结果以便于分析和 HTML 表单以便于浏览。NiCad 支持一系列语言,包括 C、Java、Python 和 C#,并提供一系列规范化、过滤和抽象。它旨在使用基于组件的插件架构轻松扩展,它可扩展到非常大的系统,并已被用于各种分析,甚至可以直接分析整个 FreeBSD 系统的所有 47 个版本(6000 万行)。
Latest posts made by dashuaiqia9
-
可扩展、灵活的克隆代码检测工具NiCad Clone Detector
-
技术领导的思考方式
目标与路径:这个思考方法的含义是:在思考一个命题要关注什么是目标,什么是路径以及目标与路径的关系。离开路径的目标是空谈,离开目标的路径是瞎干,所以目标与路径是一体两面的,离开任何一个不谈其实都不成立。同样地在技术规划这个场合,大家可以仔细去看看,很多规划都是只有目标的,但很少有规划是把路径讲清楚。
虽然这个思考模型见闻知义很好理解,但同样地这个思考模型也有一些误区:
- 目标一定是要用来完成的:Leader 都是要背负绩效压力的,所以天然就会有一个误区认为每一个目标都必须一丝不苟去完成。但一个低价值的 100%完成的目标 与 一个高价值的 90%完成的目标,未必一定是 100%完成就能拿高绩效,关键还是要看对组织的价值贡献。
所以 Leader 还是要辩证看这个问题,在设定目标时目标要具备很强的牵引性才行,是让需要团队去跳一跳的才能够达成的,让团队有斗志;自己在完成目标时也要带着团队努力往前冲,朝着高目标去想一切办法拿结果,但也要随时观察团队状态,不能为了达成目标不择手段或者把团队干废了。
- 路径执行时被惯性带着走:在细化目标的执行路径时,我们一般都会得到比较细致的 ACTION,甚至会有专人来管理和跟踪这些 ACTION。但比较容易出现的偏差就在于,我们做着做着就把初心忘了,把目标置于脑后了。典型的就是死命按照既定的路线走,没有重新基于当时的情况再回头看目标,去找是否还有更优的路径选择。所以时刻要反思什么是目的,什么是手段,不能把手段当成目的一味地执行。
这个使用的场景是在于线上的问题治理和优化,尤其是客户体验问题或者是效能提升的课题上。这个思考模式也是非常简单,但是同样误区也蛮多:
- 端到端从哪儿到哪儿没搞清楚:想到端到端去思考和解决问题是非常好的,而且大家脑补就能理解大致想干什么事情。但这个思考模式最大的误区就在于它只是存在于大家的脑子里面,而不是白纸黑字写下来。最典型的场景就是 B 提出端到端思考解决了自己域的问题,但 A 未加仔细辨别,一听到端到端就想当然以为 B 也解决了 A 的问题。但实际上发现根本不是一码事,A 就开始吐槽 B 承诺没做到,B 就吐槽 A 瞎胡说。
要破解这个误区其实也蛮简单,就是把全流程画出来,大家先基于客观事实把流程达成一致,然后再在这个流程上圈定端到端是具体哪一段到哪一段。
- 效果没有说清楚假定条件:端到端一方面是把问题看全,另外一方面最重要的就是整体交付价值。这个端到端整体交付价值也有一个非常大的误区就是,对于假定条件没有说清楚。以端到端提效为例,那么提效就应该要讲清楚是基于什么业务范围做的端到端提效,以及能够达到什么提效效果。比较好的办法就是,以表格的形式把条件列清楚,然后对外给予端到端提效的明确效能结论。提效这个事其实没有尽头,只要做不到0投入那就一定要给予效能的确定性、相比较而言大家最怕的是效能不确定打乱原有的生产计划,而不是非要死扣几个人日的效能提升。
闭环思考。这个思考方法的含义是:这其实是一个很形象的逻辑思考方法,思考一个命题要从初心出发再回到初心,以免出现重大偏差。这个模式理解起来也不复杂,但也有一些误区:
-
语音克隆Mocking Bird
Mocking Bird 是一个实时语音克隆项目,可在 5 秒内克隆声音并生成任意语音内容。 Mocking Bird 支持普通话并使用多种中文数据集进行测试:aidatatang_200zh, magicdata, aishell3, biaobei, MozillaCommonVoice, data_aishell 等;适用于 Pytorch,已在 1.9.0 版本(最新于 2021 年 8 月)中测试,GPU Tesla T4 和 GTX 2060;可在 Windows 操作系统和 linux 操作系统中运行(苹果系统 M1 版也有社区成功运行案例);仅需下载或新训练合成器(synthesizer)就有良好效果,复用预训练的编码器 / 声码器,或实时的 HiFi-GAN 作为 vocoder;可将训练结果保存在服务器端,供远程调用。
-
新型冠状病毒防疫信息收集平台wuhan2020
wuhan2020 平台的研发是针对于新型冠状病毒防疫信息的收集。并且针对 2020 年初在武汉爆发的新型冠状病毒疫情,本项目存在的目的是旨在收集各医院、酒店、工厂、物流、捐赠、捐款、预防、治疗、动态等各种防疫信息,做到统一收集,统一发布,实时更新,以便各方之间进行信息互通,有效调配社会资源。
-
新冠疫情统计模块TH_COVID19_International
TH_COVID19_International 以地图和数据统计曲线展现全球疫情统计数据,涵盖新确诊病例、累计确诊病例、治愈数、死亡数等统计维度,也聚合了权威媒体来源的动态疫情报道,以 H5 网页呈现,方便全球民众通过手机获得及时的疫情信息。开发者可快速部署和迭代、按需灵活配置。
前端、后端及数据层分离,低耦合的架构可高效应对前后端的快速迭代。根据不同的渠道来源,前端页面可通过配置实现展示的不同的模块,灵活和低成本的适配渠道;数据层的高扩展性可支持接口自动爬取、手工录入等不同来源数据的录入,满足快速变化的疫情数据需求;利用优秀的可视化组件技术,进行疫情数据展示,直观清晰的让用户对比多地区、多日期、多维度的疫情数据。
-
内存数据交换格式Apache Arrow
Apache Arrow数据交换格式是Apache基金会下一个全新的开源项目,同时也是一个顶级项目。它存在的目的是想要作为一个跨平台的数据层来加快大数据分析项目的运行速度。很多用户在应用大数据分析时除了将Hadoop等大数据平台作为一个经济的存储和批处理平台之外也很看重分析系统的扩展性和性能。
在过去几年,开源社区已经发布了很多工具来完善大数据分析的生态系统,这些工具涵盖了数据分析的各个层面。Arrow内存数据交换格式则是最新加入的一员,它提供了一种跨平台跨应用的内存数据交换格式。提高了大数据分析性能的一个重要手段是对列式数据的设计和处理。
列式数据处理借助向量计算和SIMD使我们可以充分挖掘硬件的潜力。Apache Drill这一大数据查询引擎是以列的方式存在的无论是在硬盘还是在内存中数据,而Arrow数据格式就是由Drill中Value Vector这一数据格式发展而来。除了列式数据之外,Apache Arrow还能够支持关系型和动态数据集,这使它成了处理物联网等数据时的理想格式选择。
Apache Arrow为大数据生态系统带来了无穷多的可能性。有Apache Arrow做为今后的标准数据交换格式,各个数据分析的系统和应用之间的交互性可以说是上了一个新的台阶。过去大部分的CPU周期都花在了数据的序列化和反序列化上,现在我们则能够实现不同系统之间数据的无缝共享。这意味着用户在将不同的系统结合使用时再也不用为数据格式多花心思了。
-
快应用服务框架hapjs
hapjs 实现了一个快应用标准框架,能够支持快应用的加载、运行、渲染操作,还提供了必要API的支持。快应用是一种新型的应用形态,在以往的手机端应用主要存在着两种方式:第一种是网页,另一种就是原生应用;网页的特点在于无需安装,但是缺点是体验不是很好;原生应用的优点在于体验流畅,但是却需要从应用商店下载安装,难以一步直达用户;
而此时快应用横空出世,就是希望能够让用户达到无需下载安装,并且还能流畅的体验应用内容的效果。并且为了达到上面的目标,快应用建立一种新的语言开发规范,同时提供一系列的开发套件辅助支持。
简单来说,开发者主要利用前端知识与技能,以及对应的 IDE,手机设备就可以做原型的开发。快应用使用前端技术栈开发,原生渲染,同时具备 H5 与原生应用的双重优点,开发者使用的前端技术栈资料多,学习成本低。快应用服务框架能够使用原生组件渲染快应用程序。
-
EMLL机器学习
EMLL(Edge ML Library)是一款专为加速终端侧设备上机器学习的推理而设计,它主要是提供基于端侧处理器的高性能机器学习计算函数库。EMLL支持fp32、fp16、int8等多种数据类型,并且已广泛应用于有道词典笔、翻译王和超级词典等多个硬件产品的机器翻译和语音识别引擎中,且大幅降低了推理延迟。
EMLL机器学习实现的矩阵乘法函数,为端侧人工智能中常见的扁平矩阵作了专门的优化,为各常见ARM处理器作了特定的优化。EMLL对于cortex-A35/A53/A55处理器,使用了汇编级别的优化。
-
跨浏览器同步书签
BookmarkHub 是一款浏览器插件,可以在不同浏览器之间同步你的书签。适用于各大主流浏览器,如 Chrome、Firefox、Microsoft Edge 等。它使用 GitHub 的 Gist 记录来存储浏览器的书签,可以放心安全的使用。不需要注册特殊账号,只需要用你的 GitHub 账号的 Token 和 Gist;一键上传下载书签;一键清空本地所有书签;支持跨电脑跨浏览器同步书签;支持显示本地和远程书签的数量
-
轻量级物联网操作系统OneOS
轻量级的操作系统OneOS是中国移动为了针对物联网领域专门推出的一个操作系统,OneOS操作系统具有可裁剪、跨平台、低功耗、高安全等特点,同时能过支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,还兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,能够提供图形化开发工具,能够有效提高开发效率并降低开发成本,可以帮助客户开发稳定可靠、安全易用的物联网应用。