实时可视化Debug:VS Code 开源新工具,一键解析代码结构
机器之心报道
参与:思、jamin
DeBug 太枯燥?让 VS Code 画个图,自动帮你理清数据结构与代码思路,这就是 Reddit 2K 多点赞的开源新工具。
项目地址:https://github.com/hediet/vscode-debug-visualizer
写代码,难免会遇到各种神奇的问题,代码短我们在脑海中「运行」一遍也就差不多能找出原因。但代码要是比较长,错误就会隐藏比较深了,这个时候,不论你是采用 print() 大法,还是善用 assert 语句,或者干脆设置断点,DeBug 总是一条慢慢排除的道路。
之前机器之心曾介绍过极简 DeBug 工具 PySnooper ,我们只需要向感兴趣的函数增加一个装饰器,就能得到该函数的详细 log,包含哪行代码能运行、什么时候运行以及本地变量变化的确切时间等等。这个 GitHub 12.3K Star 量的 DeBug 工具,输出风格是这样色的:
左边是运行信息,右边是对应 NumPy 代码。
这种复杂的 DeBug 工具,看起来就比较劝退。此外,在 PyCharm 上使用断点调试,它输出的也是各种变量的定义与值,同样是一堆详细信息。
那么能不能有一种更优雅的 DeBug 方式,以更简洁的信息快速帮我们找到代码的问题所在?这就是 VS Code 最新推出的可视化 DeBug,它能以图的方式快速展示数据结构。
我们先看看效果,如下动图将断点设置为第 32 行定义双向链表,随后一行行运行代码就会在右图展现出对应的数据结构图。
这种可视化非常优雅,而且该工具也会根据数据结构以不同的方式展现,例如树形、表格、曲线和图等。如下动图展示几种不同的可视化方式:
效果上确实非常惊艳,它与之前的 DeBug 方式采用完全不同的展现形式。目前该 VS Code Debug Visualizer 在 JavaScript/TypeScript 上有比较好的效果,在 C#、Java 和 PHP 上也正在积极测试,其它语言也还都能用。
安装此扩展程序后,使用命令< Open a new Debug Visualizer View >打开新的可视化视图。在此视图里,设置断点逐步执行后,表达式的执行与动态可视化都会展示在里面。右上角的刷新键可将当前的可视化工具视图弹出到新的浏览器窗口,同时还可以通过展开详细信息的窗口去选择数据提取器以及可视化调试器。
可视化调试器使用的是特定的 JSON 数据,相关支持的 JSON 数据模式可参考原 GitHub 项目。
当前的可视化表达式应该是作为 JSON 对象字符串来进行运算的,并与所支持的可视化调节器相匹配。而这个 JSON 字符串可能被单引号或者双引号所包含(也有可能没有引号),因此不能忽略转义符。
举一个案例:
对于 TypeScript/JavaScript 等语言,因为已经集成了数据抽取器,因此可以直接自动可视化。而其它没有数据抽取器的语言,就需要自定义数据结构与可视化器之间的关系了
该扩展还内置了其他可自定义的可视化调节器,尤其在 debug 时使用起来非常直观,可以根据面对不同的处理对象,可选择更易于理解的可视化方式。比如图表可视化,Plotly 可视化,Tree 可视化,网格可视化,文本可视化等等。在其种类非常丰富的同时,操作性也较为简便,效果非常直观,小编选取了几种类型作为案例:
Plotly 可视化
AST 可视化
在使用 AST 可视化还会呈现源代码,在选择其节点时,还会突出显示源代码中的跨度。
我们读者最常用的就是 Python 语言,然而遗憾的是,Debug Visualizer 并不支持 Python 数据结构的自动可视化。不过,Python 开发者还是非常热情的,他们尝试手动添加自定义可视化功能。
项目维护者正在讨论添加对 Python 的支持。
那么如果要手动调用 Debug Visualizer,开发者在 Demo 中新提交了一个 Python 示例。我们需要以 JSON 格式来表示数据,并完成自定义可视化,注意该 JSON 需要满足 Debug Visualizer 的格式定义。
如果在循环语句中设置断点,那么就可以导入 json_graph 来可视化结果,如下所示为 10 个节点的可视化展示。
在 Reddit 社区上,也有很多开发者在讨论 Python 是不是能用,有没有更便捷的方式自动可视化 DeBug,而不是在 DeBug 前还需要手动先配置一番。
VS Code Debug Visualizer 确实非常酷,但支持 Python 的它会更有意思。现在不论是项目维护者还是其它开发者,都在关注这个问题,期待过一段时间它能完美支持 Python。
参考链接:https://www.reddit.com/r/programming/comments/f88zom/i_made_an_extension_for_visual_debugging_in_vs/
这四款良心好用的优质软件,我用了多年,百用不腻
QQ作为一款时兴的即时通信软件,基本上每一个人都用过,但其中隐藏的,一些实用功能,却鲜为人知。
QQ文字识别
比如,笔者今天要说的这个功能,完全免费,操作还很简单。
你只需要在电脑端打开QQ,“Ctrl+Alt+O”键,直接识别文字,精确度极高。
不仅可以复制文字,还能转换文档,在线翻译呢,而在手机端,你只需要选中图片,即可一键点击“识别文字”,既简单又方便。
不过,有一点需要注意的是。
如果热键没有反应,可能是键位出现了冲突,重新设置即可。
或者说,你的qq热键里,没有识图这一项,那么,你也不用慌,且看下一个软件。
天若识别OCR是一款,电脑端功能最为强大的文字识别软件,强大到什么程度呢?可以直接让你解放双手!
天若识别OCR
首先呢,这个软件是绿色免安装的,解压即可使用,并且,你还可以直接把它保存在U盘上,随时随地打开即用。
其次,它的使用方法也蛮简单的。
只要你一打开天若识别OCR,软件就会默默在后台运行,不会打扰你的正常工作,更不会拖慢电脑的运行速度。
而当你需要用到识别文字的功能时,只需轻轻按下F4键,即可选择需要识别的区域,准确率极高,除此之外,你还能对识别的文字进行拆分、编辑等相关操作,它不仅支持自启、翻译等基本功能,还支持自定义快捷键呢,简直不要太方便。
有了它,你再也不用遭受,领导劈头盖脸给你发一堆图片,让你码成文案,所带来的痛苦啦!
说实话,BT下载器发展到今天,技术已经相当娴熟啦,老牌软件,一抓一大把。
但如果让我选的话,我还是会选qBittorrent EE,这个由qBittorrent衍生而来的工具,体积轻巧,完全开源。
qBittorrent EE
混PT站的老司机应该会熟悉,很多PT站上点名表扬,毕竟,开源的qB没有偏心操作,更不会存在吸血的说法。
但对于不混PT站的小萌新来说,qBEE这个加强版,似乎更为友好,它禁止了迅雷等一众工具的反吸血行为。
所谓的反吸血,其实很好理解,比如当迅雷想从你这里获取上传资源时,qBEE会帮你说“No”。
而功能方面呢,也蛮强大,做种、RSS订阅、优先级调整、IPv6兼容等,在qBEE这里,都可以被轻松实现。
当然,如果你想让它变得又快又强的话,我可以告诉你一个很简单的方法——添加Tracker服务器。
在“工具”里面,找到“设置”,拉到最下方,勾选“Automatically……”,在输入框内,添加订阅地址即可。
而这样折腾的效果,并不会让你失望。
当你在迅雷会员里下载蜘蛛侠时,速度只能跑到20M/S,而在qBEE这里,直接可以跑到40M/S。
云表企业应用平台,是一款可以帮助你解决业务难题,让你实现下班自由的软件神器。
博隽供应链
作为国内首创“表格编程技术”的无代码开发平台,云表平台的功能,可谓是日新月异。
使用者,不用学习Access数据库知识,不用记多如牛毛的excel函数公式,更不用写一行代码,只要运用上云表特有的“三板斧”:业务公式+业务公式+数据接口,即可自如搭建出功能可随需而改的SRM、MES、ERP、PLM、OA等复杂核心业务应用。
当然,配置权限、业务流程等相关工作节点,也是可以轻轻松松就能解决。
BOM管理
而它的功能却不止步于此,像平时你在使用excel和WPS时,很难解决的业务需求,都可以用它来解决。
比如,工作流、流程审批、数据透视、数据监控、统计查询、项目跟踪、货物追溯、商品编码、条形码自动生成、批量导入/导出、报表模板自定义打印、报警阈值、消息推送、OpenAPI、H5、多人协同……
只要是你能想到的业务,就可以把希望寄托在它身上。
可视化大屏
值得一提的是,5并发以内,它是可以免费使用的,不仅开发效率较传统代码编程,快5-10倍,而且,它还支持自定义生成个性化的app,可无限扩容金蝶、企业微信、数控机床、PDA等第三方主流信息系统。
像华为、许继电气、恒逸石化、中国电信等这些知名企业,都在深入使用它。
以上三款优质的Windows软件,或许常见,又或许默默无闻,但都不影响它们,良心又好用。
就像你用了十多年QQ一样,只会吐槽其冗余的系统设计,而对于那些实用的功能,视而不见。
我们永远也没有办法,叫醒一个装睡的人。
文|Mondy
标签:软件 科技 电脑软件 华为
程序员必知的8个Java开源IDE工具!你最钟意哪个?
出色的Java工具有助于提高工作效率。Java IDE 工具提供了多种用户独特需求和个人偏好来创建编程环境的方法。
今天,给大家分享8个程序员最爱的Java开源IDE工具,
没有用过的小伙伴,快快收藏哦!
01 BlueJ
BlueJJava环境下的一个内置编辑器、编译器、虚拟机、调试器的多应用软件,是专为教学设计的,很适合在小规模的软件开发中使用。它易于使用和测试的交互式界面,不仅适合用于在学校教授Java编程课程,而且允许程序员调用功能,即对象、方法、参数等,而无需编译源代码。
02 Eclipse
Eclipse是一款主要用Java编写的免费IDE,允许创建各种跨平台的可用于手机、网络、桌面和企业领域的Java应用程序。
它的主要功能包括Windows生成器、集成Maven、Mylyn、XML编辑器、Git客户端、CVS客户端、PyDev,并且还有一个基本工作区,有可扩展插件系统可满足自定义IDE的需求。通过插件,也可以用C、C ++、JavaScript、Perl、PHP、Prolog、Python、R、Ruby(包括Ruby on Rails框架)等语言开发程序。
03 IntelliJ IDEA
IntelliJ IDEA CE(社区版)是IntelliJ IDEA的开源版本,为Java、Groovy、Kotlin、Rust和Scala等提供IDE。可用于现有的源重构,代码检查,使用JUnit或TestNG构建测试用例,以及使用Maven或Ant构建代码。IntelliJ IDEA CE的优秀功能有API测试仪,允许通过Swing GUI设计器测试API的功能,很多经验丰富的程序员尤其喜欢IntelliJ IDEA CE。
04 Netbeans IDE
NetBeans IDE是一个集成的Java开发环境,它能为独立的、移动的和web架构设计模块化的应用程序,并支持web技术。NetBeans IDE能建立关于如何有效管理项目、工具和数据的多个视图,并可以在新开发人员加入项目时进行软件开发协作。
05 VSCodium
VSCodium是一个免费的源代码编辑器,它在Windows、macOS、Linux上皆可用。它是一个基于Visual Studio代码的开源替代品,支持多种编程语言,如Java、c++、c#、PHP、Go、Python、.net等。
06 jEdit
jEdit是一个具有广泛插件架构的文本编辑器,具备编辑搜索,查找,替换和源代码编辑等功能,支持超过两百种语言,包括Unicode。
07 jGRASP
jGRASP是运行在Java平台上的IDE,提供可视化自动生成,能在运行时产生静态可视化的源代码结构和直观化的数据结构,且jGRASP能产生支持Java、C、C ++、Objective-C、Python、Ada和VHDL的控制结构图;支持Java和Ada的复杂文件图表;支持Java的UML类图;还有动态对象查看器和结合了集成调试器和Java工作台的画布查看器。
08 JSource
JSource是免费的Java IDE,尤其在创建跨平台的Java应用程序中非常有用。JSource能运行、编译、编辑和创建Java文件,主要特点是支持多种语言的语法高亮显示和Java Swing组件。
程序员最爱的8个Java开源IDE工具你收藏了吗?如果还有什么想要了解的,或者你有其他更好用的IDE,欢迎大家在下方留言探讨!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。