存档

‘工具’ 分类的存档

SharpShell

2023年7月29日 没有评论

最近在搜索使用C#来实现文件扩展模块,即右键属性对话框里的设置,这个基本上是 com 实现的,当然就是支持 C++,这个东西对我来说过于复杂了,全网搜索了下,最后发现了一个项目满足自己的需求,这里推荐给大家,希望大家喜欢。

https://github.com/dwmkerr/sharpshell#property-sheet-extensions

分类: 一句话, 工具 标签:

gif 生成 mp4 文件

2022年10月24日 没有评论

由于项目需要使用 mp4 视频文件,所以要将现有的gif 动画给转换一下。

网上一搜索,各种在线转换工具,随便选了一个,上传转换下载一气呵成。

但是,后面视频怎么都不显示,以为是代码的问题导致,后来无意间看到 chrome 内核下是可以正常显示的,遂怀疑是兼容性问题。

于是网上各种检索,无意间看到别人在一篇 android 手机的帖子里提及了类似的问题,说是转换的格式不对。尝试了一下,果然解决问题。

这里给出 ffmpeg 的方案,方便后来人:

ffmpeg -i gestures.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" gestures.mp4
分类: 一句话, 工具 标签:

查找端口被占用的程序

2022年8月8日 没有评论

在运行程序,特别是开发阶段,有时候会碰到程序提示端口被占用的情况。有的时候,我们可以改变端口号,但是某些时候,端口号不能修改,只能去找到底是被什么程序占用的。

首先,以管理员权限运行下面的命令:

netstat -ano

可以显示所有获得网络连接活动的程序列表,如果想看特定的端口,也可以一步到位,例如查找 4200 端口,输入:

netstat -aon | findstr "4200"

界面输出的列表最后一列就是 PID 信息,这个 PID 就是使用该端口的程序进程。然后在任务管理器里根据 PID 找到具体的进程,接下来就是根据情况杀死这个进程就可以了。

但是,但是,别急。一般情况下没有问题,实际操作上会发现有的时候,查出来的 PID 是 4,也就是 System 进程,该进程无法被结束。

是不是感觉很沮丧。

在网上一番检索后,又找到了针对 System 进程进一步分析的方法。

接着在命令行里输入:

netsh http show servicestate

在输出结果里查找目标端口号,再根据上下文找到“请求队列名称”的值,这个值就是具体的进程,再根据这个队列名称,在上下文里找到进程 ID。

最后就可以在任务管理器里结束相关进程拉。

分类: 工具 标签: ,

如何让 WSL 支持多个独立的 Ubuntu 实例

2022年5月11日 没有评论

在 win10/win11 系统中,微软已经支持了 WSL,用户可以先安装 sub system for Linux 组件,然后通过 Store 来下载自己感兴趣的 Linux 镜像来安装享用。

但是,这么做有一个问题就是对于同一个类型,例如 Ubuntu 20.04,就只有一个实例,对于普通用户来说,不能添加多个实例。

那为什么会有多实例的需求?很简单,场景需求不同。例如,有时候想临时折腾下某个功能,然后完事了再还原回去,也就是类似快照的功能。还比如说,针对 .Net 和 Java 设置不同的环境,各自编译各自的,互不影响,系统也简洁,有点docker的味道。

微软的答案就是使用 wsl 命令,可以轻松导出或者导入发行版的副本。

首先,可以使用 wsl –list 命令,获取到当前系统上可用的实例。
wsl –export Ubuntu ubuntu.tar // 导出 Ubuntu 实例,并保持为 ubuntu.tar 文件
wsl –import Ubuntu-java .\Ubuntu-java ubuntu.tar // 导入 ubuntu.tar 文件,生成新的实例,新名称为 Ubuntu-java,新实例的文件夹为当前目录
wsl -d Ubuntu-java //启动新的实例

当然,wsl 还有 WSL 1 和 WSL 2的区别,大家可以根据自己的偏好使用即可。

像作者“衣服自己洗”这么懒的人,怎么可能用命令行呢,不方便不说,参数什么不好记。经过一番搜索,最后锁定了 “WSL Manager”这么一个开源工具,可视化操作,还是比较爽的。

经过试用,发现使用这个工具进行导出导入操作时,时间比使用命令行的方式要长些,都快要放弃的时候,界面显示操作成功。所以大家可以结合起来使用,日常的启动停止等操作就用 GUI工具,偶尔的导出导入操作就用命令行。

有个事情需要提一句,WSL 和虚拟机之类的有冲突导致蓝屏,这个是和 Hyper-V 有关,目前来看只能二选一,无解。

分类: 工具 标签:

PhantomJS

2019年4月19日 没有评论

最近一直都在用一个网上免费的xx服务,但是其账号会

最近一直都在用一个网上免费的xx服务,但是其账号会更新,所以就需要时不时地访问其页面以获取更新的账号。这不,突然就无法访问了。我用海外的服务器访问了下,发现还是可以访问的。但是这个网页的内容是用 js 动态生成的,这样就无法简单地查看了。

所以就想有没有什么工具可以获取网页的dom树,刚开始时搜索了下命令行的浏览器,后来发现不能满足要求,因为我需要点击页面里的一个按钮以复制账号信息。后来换了个思路,如果可以生成网页截图的话,起码我可以手动的通过扫描二维码来添加账号。

后来在网上发现了这个工具:PhantomJS,按照官网说法,它可以生成网页快照,辅助做一些自动化测试的工作。

简单扫描了下示例代码,在 example 目录下,恰好就有一个现成的例子(rasterize.js),调用也很简单,例如 .\phantomjs.exe ..\examples\rasterize.js https://www.baidu.com/ image.png 1920px。对于最后一个参数,需要多说一句,官方的示例运行会报错(ReferenceError: Strict mode forbids implicit creation of global property ‘pageWidth’),在代码的开始部分添加 pageWidth和pageHeight定义即可。

海外的服务器么,自然会有另外一个问题就是对于中文的支持,apt-get install xfonts-* 完事。

最后看到了生成的截图,上面说如果无法访问,就使用 IP 代替等等,于是添加了一个host解析,终于浏览器可以正常访问了。

回到需求本身上来,后续看看是否可以用PhantomJS作为监控,每当更新了账号信息时就主动通知我。

分类: 一句话, 工具 标签: