DHAT rust 程序分析器

2023-03-01

项目地址 github.com/nnethercote/dhat-rs

堆分析器是使用一个全局的分配器来实现的,它跟踪了系统的内存分配器,跟踪了所有的堆分析,并且在程序退出的额时候写入文件,输出的文件可以使用 DHAT 的查看器阅读。

阅读文档 https://docs.rs/dhat/latest/dhat/

开始使用 HELIX EDITOR 编辑器

2023-02-17

在工作的十来年内,我使用过各种各样的文本编辑器,从最开始的nodepad以及网页三剑客,到sublime2,sublime3,vim, neovim, atom, vscode, 特别是在使用 vscode 的时候, vim 键盘布局的兼容,加上逐渐丰富的插件系统,使用起来非常的好,可以说是我近年来使用过最好编辑器了。但是随着使用时间的加深,vscode 使用 electron 在我的电脑上也开始出现了隔上一段时间就会出现一次小小的卡顿,最开始的时候还能够忍受,当你的输入被打断的时候,就变得非常的不爽了,然后重新回到了 neovim 编辑器。

Neovim 和 vim 相同,初始仅提供了模态编辑功能,优秀的键盘布局通过练习后会形成一套肌肉记忆,让编辑文本变得更加的有效率,这也是近年来多数商业的编辑器也都支持了vim mode 的原因。

Neovim 支持 lua 来配置,这比之前的vim配置有效率的多,也诞生了不少框架,比如NvChad,有这些框架的支持,最少也不用重新开始配置了,然后就是查询 neovim 的最优插件,tree-sitter 语法支持,lsp 支持,为使用到的语言配置。然后更新,修改配置。然后就是维护这套配置。这无疑会话费大量的时间。

去年五月份的时候,我在github上发现了Helix编辑器项目,当时已经有 10K STAR 了,下载后自己编译了文件,发现编辑器和 vim 非常的类似,仅仅是部分操作有所差别,官方提供了更加现代化的提示,可以说非常的友好,可以看出它融合了很多现代编辑器以及vim插件的特性,这些我们下面再说。

Vim 的操作模式是多数是 动作 --> 对象, 默认情况下除了编辑器下方的动词,你没有任何的提示,需要我们自己来确认需要处理的选择对象。

而 Helix 是 选择操作的对象 --> 动作, 是先要明确要操作的对象,然后才是输入动作,这样在多光标多个选区的时候是非常有效和明确的。Helix 编辑器和 Kakoune 相同是以多光标操作为核心,允许多个选区同时操作的编辑器。而 Vim 则需要通过插件实现多光标模式,所以操作上也有一定的差异。

在使用了 Helix 的几个月内,一定程度上变成了我主要编辑器,因为 Debugger (DAP) 还不成熟,Debug 我还在用 Vscode。下面让我快速的介绍下这款编辑器吧。

helix editor 中文教程

2023-02-02
     _   _                 __    __
    | | | |         _      \ \  / /
    | |_| |  ____  | | (_)  \ \/ /
    |  _  | /  _ \ | |  _    )  (
    | | | | |  __/ | | | |  / /\ \
    |_| |_|  \___| |_| |_| /_/  \_\

        一个后现代模态文本编辑器
            version 22.12 

本文已经提交 PR#5199 建议本地合并PR,编译后使用 :tutor zh_cn 使用本教程。

欢迎使用 Helix 编辑器!Helix 不同于其他的编辑器,它是有模态的, 也就是它在编辑文本的时候有不同的模式,最常用的模式有普通模式Normal mode)和插入模式(Insert mode)。普通模式下您输入的按键 实际上不会输入任何文本,而会对文本进行各种操作。这样可让您进行 更加高效率的操作。本教程将教您如何使用 Helix 的模态编辑功能。

现在,现在请确保您的 CapsLock (大小写锁定键) 没有被按下,然后 按下 j 键,直到第一节课的内容完全显示。

Godot4 脚本语言 gdscript2

2023-01-11

主要内容

  • 注释
  • 变量
  • 表达式
  • 函数
  • 流程控制
  • 数据类型

Mac 睡眠监控sleepwatcher和蓝牙控制

2022-11-06

最近,晚上关闭MacBook后,第二天打开电脑黑屏,充电后才会重新开机,发现电池已经 耗尽电量。

MacBook 睡眠模式下,wifi和蓝牙都会继续工作, 有的时候多个设备的信息共享会莫名奇 妙的自动唤醒 mac, 然后导致耗电。

检查 系统设置->电池内选项,使用电池电脑休眠时,启用电能小憩,是否选上。 网络唤醒选择仅使用电源适配器的选项。

sleepwatcher

sleepwatcher: https://www.bernhard-baehr.de/ 是一个监控睡眠的守护进程工具,当 Mac 在唤醒和睡眠的的时候,可以执行配置的 sleepwakeup 脚本程序,它还可以 监控上次睡眠前的活动信息。

使用 brew 安装

# 安装
brew install sleepwatcher
# 设置启动
brew services start sleepwatcher

检查文件可以看到 /usr/local/Cellar/sleepwatcher/2.2.1/ 文件夹中 homebrew.mxcl.sleepwatcher.plisthomebrew.sleepwatcher.service 里的配置 参数,

查看这两个文件可以看到,默认的配置脚本参数是 HOME_PATH/.sleepHOME_PATH/.wakeup , 可以创建 .config/sleepwatcher/sleep|wakeup , 然后修改配 置文件 -s-w 参数,然后 brew services restart sleepwatcher

使用 tectonic 快速入门使用 latex

2022-11-01

理解基本

latex 是一个文档准备系统 (document preparing system),它非常适用于生成高印 刷质 量的科技类和数学类文档。它也能够生成所有其他种类的文档,小到简单的信件,大 到完整的书 籍。latex 使用 tex 作为它的排版引擎。

latex 本质上是利用各种个这样的宏包提供的标记命令来标记文本,从而编译出对应的 格 式,如果学习过 html 标签文本的同学会更加的了解这一书写规范。现代的文本编辑格 式 从普不同文本,到简单的 markdown 以及其他的 markdown 变体,到复杂的 html 以及 latex, 这样的纯文本加上标记的文档,实际上是让人更加的注重文章的内容,而不必去限 定于某种软件才能编辑,无论是跨平台还是版本管理(vcs)上都是十分具有优势的。

另外在学术领域上 latex 上应用比较广泛,markdown 则在程序开发者应用比较多。

工具

language server protocol (lsp) 和 文本编辑器

texlab 为 latex 提供了 语言服务器协议(lsp)。

texlab 和 tectonic 一起使用 https://github.com/latex-lsp/texlab/wiki/tectonic .

ext-php-rs 使用 RUST 更加方便的构建 PHP 扩展

2022-10-31

ext-php-rs 是一个用于构建PHP扩展的RUST库,比起其他的php的绑定库,该库使用起来 更加的方便和快捷。

官方宣称的特性为:

  • 易于使用,内置的宏抽象了 zend API,特别是参数类型交互
  • 轻量级,该库会自动编写胶水代码,只需要写功能即可。
  • 可扩展,可以使用 IntoZvalFromZval 定义自己的类型用于参数和返回类型。

迄今为止, 使用rust写php扩展,并没有太好的方式与php进行交互,建议使用rust写 基础类库。

Graphviz Dot UML 编程工具

2022-10-28

Graphviz - dot

Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的 开源工具包,可以用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。 Graphviz是一个自由软件,其授权为Eclipse Public License。其Mac版本曾经获得2004年 的苹果设计奖2

命令说明
dot一个用来将生成的图形转换成多种输出格式的命令行工具。其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。
neato用于sprint model的生成(在Mac OS版本中称为energy minimized)。
twopi用于放射状图形的生成
circo用于圆形图形的生成。
fdp另一个用于生成无向图的工具。
dotty一个用于可视化与修改图形的图形用户界面程序。
lefty一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。