1.盘点23个提高开发效率和美观性的源码 VSCode 插件!
2.vscode代码格式化
3.超详细!spdlog源码解析(下)
4.基于 Newtonsoft Json 实现 console log formatter
5.SAP ABAP Development Tool 提高开发效率的源码十个小技巧
6.Gin源码分析 - 中间件(3)- Logger
盘点23个提高开发效率和美观性的 VSCode 插件!
VSCode插件集合,提升开发效率与美观性 VSCode是源码一款功能强大的源代码编辑器,提供了语法高亮、源码代码自动补全、源码代码重构等功能,源码listview 源码分析内置命令行工具与Git版本控制,源码支持多种编程语言与调试功能。源码本文为您推荐款VScode插件,源码涉及美观、源码编程、源码效率等多个方面,源码满足不同开发需求。源码 美观类插件: CodeSnap:轻松生成高分辨率精美代码 :emojisense::为Markdown文档或命令行添加表情,源码提升编程趣味性 Marquee:改造编程主屏幕,源码展示新闻、天气等信息 Material Theme:安装不同主题,自定义编辑器外观 Bookmarks:为文件特定行添加书签 Bracket Pair Colorizer:给括号添加不同颜色,区分区块 vscode-icons:更换更好看的文件图标 前端编程类插件: Vetur:为Vue项目提供语法高亮、智能感知等 Auto Close Tag:自动闭合HTML/XML标签 Auto Rename Tag:自动重命名HTML/XML标签 formate: CSS/LESS/SCSS formatter:格式化CSS/LESS/SCSS,增强可读性 Live Server:为静态和动态页面启动本地服务器 Debugger for Chrome:将JS代码调试嵌入Chrome浏览器 C/C++编程类插件: C/C++:为VSCode添加C/C++语言支持,包括IntelliSense和Debugging C++ Intellisense:为C/C++提供智能感知 CMake Tools:为VSCode添加CMake支持与感知 Python编程类插件: Python:为VSCode添加Python语言支持,包括IntelliSense和Debugging Jupyter:为VSCode添加Jupyter Notebook功能 效率类插件: Git Graph:可视化Git提交流程 koroFileHeader:格式化文件头部注释与函数注释 Code Runner:直接运行多种语言代码片段或文件 Better Comments:提供特定类型注释的高亮 CodeTime:分析每天敲代码时间 推荐技术交流群与资源获取方式: 本文建有技术交流群,欢迎进群获取最新优质文章、岗位推荐与互动交流。添加微信号:dkl,备注研究方向、学校/公司与知乎,即可入群。 关注Python与数据挖掘知乎账号与公众号,快速获取最新技术资讯与学习资源。游戏源码含搭建vscode代码格式化
vscode如何自动格式化代码?我们一起了解一下吧!
在 visual studio code编写代码中我们总会遇到代码乱、格式不规范的问题,要解决此类问题将vscode自动格式化代码,需要安装插件并进行设置,具体操作如下。
1、首先在code中安装 Prettier -Code formatter(代码格式化程序)
2、在菜单栏中打开设置
3、在搜索条搜索prettier ,点击“ 在settings中编辑”栏目
4、添加一条保存时格式化代码的语句 editor.formatOnSave: true
5、如果出现错误有可能是在上一条语句中的编写格式或者符号错误,重现检查编辑即可。
VSCode全称是Visual Studio Code,这是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。
关于vscode如何自动格式化代码,我们就分享到这啦!
超详细!spdlog源码解析(下)
回顾spdlog的组成,包含logger、sink、formatter以及registry四个关键部分。idc前台销售源码在前两篇中,我们深入探讨了logger、sink和formatter的基本功能与使用方法。这三者协同工作,能够实现日志的记录功能。然而,registry作为管理器角色,主要负责协调和配置这些组件,确保日志系统的一致性和高效性。尽管registry并非必须依赖的组件,它的存在能够提供更加便捷的管理方式,例如统一设置日志等级、创建具有默认配置的logger等。
在默认logger和默认sink的实现中,registry扮演着关键角色。当使用spdlog::info方法时,实际上调用了registry中的default_logger_成员变量,获取默认logger的指针。通过静态方法registry::instance()获取registry对象,最终registry::registry()方法创建默认logger,并选择ansicolor_stdout_sink_mt作为sink,实现控制台彩色输出。这种设计使得用户无需深入了解内部细节,即可直接使用默认配置进行日志输出,简化了用户上手过程。
registry的功能不仅限于管理默认logger,它还提供了创建logger的便利接口。通过一系列预设的logger创建函数,spdlog实现了与不同sink的无缝集成,隐藏了sink的移动充值跳转源码概念,使得用户仅需关注日志输出的目的地,而无需深入理解底层实现。例如,stdout_logger创建函数通过调用Factory::create方法,自动将创建的logger注册到registry中,实现日志输出格式的统一化和全局管理。对于异步环境,async_factory::create方法同样完成了类似功能,但需额外处理线程池的创建。
通过反思registry的实现,我们可以发现,其核心功能在于管理logger,而这一过程包含了将logger注册到registry中的关键步骤。通过提供Factory(如synchronous_factory或async_factory)的create方法,spdlog确保在创建logger后将其自动注册,这一设计与设计模式中的工厂方法原理相契合。实现这一目标的关键在于注册操作,而非创建logger本身,这突显了registry在spdlog系统中的核心作用。
在介绍spdlog的宏定义使用时,我们探讨了其支持的两种编译版本:header-only version和compiled version。header-only version通过将声明与实现分开,提供了轻量级的集成方式。要实现compiled version,只需复制header-only version的代码,并按照特定规则组织文件结构。在async.cpp文件中,通过SPDLOG_COMPILED_LIB宏定义判断编译方式,相应地include声明与实现文件,实现代码的虚拟货币源码文件高效复用。同时,SPDLOG_HEADER_ONLY宏定义控制了代码的包含行为,确保了不同编译方式下的代码正确性。
在多平台支持方面,spdlog通过os.h和os-inl.h文件封装了针对不同平台差异的处理逻辑,使得上层业务无需关注底层实现的细节。通过宏定义和条件编译,spdlog能够提供一致的接口,适应不同操作系统和环境的需求,确保跨平台兼容性和稳定性。
至此,spdlog源码解析系列告一段落。通过深入分析spdlog的架构设计、功能实现以及跨平台支持,我们不仅了解了如何高效地使用spdlog进行日志管理,还洞悉了其设计背后的巧妙逻辑和实践细节。希望本系列解析能够为开发者提供宝贵的参考,助力构建更加稳定、高效和易于维护的日志系统。
基于 Newtonsoft Json 实现 console log formatter
基于.NET 5.0引入的console formatter功能,实现JSON console日志自定义成为可能。然而.NET默认的JSON console存在严格的编码要求,特定符号和编码处理不当。为解决此问题,基于Newtonsoft Json,实现一个console log formatter。
设计NewtonJsonFormatter时引入NewtonJsonFormatterOptions。为使用便捷,定义了扩展方法AddNewtonJsonConsole。通过AddConsoleFormatter注册自定义的NewtonJsonFormatter,并通过AddConsole配置console服务,指定FormatterName。可选委托用于自定义配置。
示例演示默认JsonConsole与自定义NewtonJsonConsole的使用。默认输出结果中,Ctrl+C等特殊字符可能被编码。使用自定义版本时,输出原始日志,避免编码干扰,直观呈现日志信息。
实现说明仅供参考,实际应用中需根据需求进行调整。注意,自定义的NewtonJsonConsole未包含OriginalFormat输出和scope信息处理。代码示例与源码链接提供在GitHub上。
SAP ABAP Development Tool 提高开发效率的十个小技巧
这是 Jerry 年的第 篇文章,也是汪子熙公众号总共第 篇原创文章。
Jerry 已经有很长一阵子没有打开工作电脑上的 SAP ABAP Development Tool 了。在用 Visual Studio Code 进行 Angular 开发马上快满一年的时间点上,为了做到喜新不厌旧,本文把 SAP ABAP Development Tool 一些提高工作效率的使用小技巧罗列出来。欢迎大家在留言区补充。
关于 Jerry 之前分享过的 SAP ABAP Development Tool 使用技巧,请查阅这些文章:
假设我想打开 ABAP Development Tool 和颜色 (color) 相关的设置,但是我记不住具体的设置路径了,没有关系,使用快捷键 Ctrl + 3:
在输入框内输入 color,然后就能看到所有和 color 相关的设置。
选择自己想设置的条目,单击,即可迅速进入设置页面:
CDS view 数据预览之后,可以通过 Add filter 右边这个小图标,以不同的格式另存到本地以便进一步分析。
快捷键 Ctrl + Shift + A,在打开的弹出窗口里输入搜索条件,即可快速搜索并打开找到的对象。
支持常用的搜索通配符。
例如我们想查看标准视图 /DMO/I_Travel_U 的明细,无需打开其视图本身。
直接鼠标选中该视图,按 F2 即可在弹出窗口里查看,清晰准确,一目了然。
如果嫌这个弹出窗口尺寸太小,还可以将其以 ABAP Development Tool 属性视图的方式显示,点击这个小图标即可:
SAPGUI 里能在编写 ABAP 类方法源代码实现时,随时查看其方法参数定义,这一点我很喜欢。
在 ABAP Development Tool 里就无法随时看到方法参数定义了。
不过只需要按一下 Alt + F2, 方法参数定义又回来了:
我用了快一年的 Visual Studio Code 进行 Angular 开发了,真心喜欢其 Quick Fix 功能, 编译器能通过上下文,自动给出一些编译错误的解决方案。
ABAP Development Tool 里也有类似功能。比如下面的例子,代码第行,变量 lo_request 没有定义就直接使用,引起了一个编译错误。
想让你的方法能够像 Visual Studio Code 里显示的注释一样专业吗?在 SAP ABAP Development Tool 里当然也能做到。
在 ABAP Formatter 设置里,将 Keep Camel Case Identifiers 前的勾打上即可。
SAPGUI 里所有的 ABAP 关键字都只能设置为同一种颜色。而 ABAP Development Tool 里,能够为不同的关键字分别设置不同的颜色:
Visual Studio Code 需要安装额外的扩展才能实现这个颜色更改需求,而 ADT 本身的设置就足以工作了,相当赞。
假设我想查看名为 config 的属性在 Component 里所有的出现场景(Occurrences), 需要 Ctrl + F 打开搜索框,输入 .config. 这样,代码中所有出现 .config 的位置,会被高亮显示。
在 ABAP Development Tool 里就方便多了。
按 "Ctrl +," 的快捷键,可以在这些位置之间进行切换。
在使用该功能时,确保编辑器里的 "ABAP Occurrences" 处于开启状态。
希望这些小技巧能够帮助提高大家使用 SAP ABAP Development Tool 的开发效率。
Gin源码分析 - 中间件(3)- Logger
本文深入剖析Gin框架内置中间件Logger,详细阐述其四种创建形式。基本形式以默认配置输出日志至标准输出。自定义格式器形式允许用户调整日志输出格式。指定输出流形式则灵活地将日志输出至特定写入器,同时可忽略指定路径的日志。复杂配置形式提供高度定制化,是创建中间件的高级手段。深入探讨LoggerConfig结构体,解析其三个关键属性:日志格式、输出器和忽略路径。LogFormatter方法实现日志的格式化,包含辅助函数进行颜色调整,如根据HTTP响应码和请求类型设置显示颜色。defaultLogFormatter方法提供默认的日志格式化操作。详细解析LoggerWithConfig方法,该方法获取配置参数并判断输出环境,随后将忽略路径保存为映射,记录过滤的路径。计算处理时间和构建日志字符串,输出至指定写入器。
写了一个 vscode 插件:自动添加可选链
自动添加可选链的实现方法如下:
首先,创建项目并新建 package.json,安装 eslint 的包。
接着,在 src/index.js 写入相应代码,利用 eslint API 创建对象并设置配置参数,检查代码并打印结果。
通过引入 @babel/eslint-parser 并创建 babel 配置文件,确保正确解析代码。
运行项目,会发现有错误提示,显示额外分号的存在。通过 eslint 内置 formatter 格式化代码并重新打印,得到常见错误格式。
将 fix 设置为 true,自动修复错误,打印结果以验证末尾分号已被移除。
接下来,编写自动添加可选链的插件。新建 src/auto-optional-chain.js,利用插件元信息和实现逻辑处理 AST 节点。
使用 astexplorer.net 分析代码,发现 MemberExpression 成员表达式和 OptionalMemberExpression 可选链表达式。
通过 ESLint 的 api 检查并修复 MemberExpression 节点,自动转换为可选链形式。
测试插件,观察到自动修复后的代码正确无误,实现自动添加可选链的功能。
值得注意的是,当前插件存在局限性,会自动转换所有 data.xxx 结构,影响代码的灵活性。为此,可使用 babel 插件在编译阶段进行转换,避免修改源代码。
为满足更为精细的使用场景,开发了 vscode 插件,允许用户选择性地将数据访问转换为可选链。通过 package.json 的 contributes 配置命令、菜单和快捷键实现。
vscode 插件允许用户通过编辑器右键菜单或快捷键,轻松将选中的代码块转换为可选链形式,提供高效且灵活的代码修改体验。