写了个控制台图标修改工具

作者:V君 发布于:2022-7-13 19:57 Wednesday 分类:我的应用

TL;DR [ 下载 ][ 源代码 ]

效果:将当前控制台窗口图标(包括任务栏和Alt+Tab界面)设置成指定的 ICO 文件
限制:任务栏合并时不起作用
环境:在 Win10、WinServer2019 下正常工作
用法:
 1. 下载 ConsoleIcon.exe,放入 Windows 文件夹或者 PATH 环境变量或者使用绝对路径
 2. 在 bat 文件中调用,传入图标文件路径,支持相对或绝对路径
 F. 例子: @ConsoleIcon Logo.ico

稍微扯扯:

这玩意儿纯属一时脑洞想出来的,由于自己的服务器上会跑许多批处理,不爽默认图标就尝试去修改它。

最初的实现没有持久,后来增加了一个后台进程来维持图标句柄(?)于是持久了,多次调用不会增加后台进程数量。

标签: 软件开发 控制台

评论(0) 引用(0) 浏览(102)

写了个TCP连接状态统计小工具,代替 netstat 和 find 命令组合

作者:V君 发布于:2022-6-26 11:33 Sunday 分类:我的应用

TL;DR for 立即想拿来用的人:[下载 |源代码 ]

然后是使用说明
 ConnectionStat.exe 若干监听端口参数
示例
 ConnectionStat.exe 80
 ConnectionStat.exe 443
 ConnectionStat.exe 80 443
首先会输出当前主机的连接状态统计,接着挨个参数指定的端口筛选统计
最后如果指定两个端口以上,则统计列出的端口连接状态总数

简单扯一扯

工作中有一些TCP协议的服务器用来接入各种设备,经常需要统计连接数来排查状况,经常用 netstat 和 find 命令搭配,每次使用都觉得麻烦,那就写个简单的工具来实现汇总,基于这个工具外面再套一层,从服务配置文件读取监听端口,这就更方便了。

标签: 软件开发 C# 软件故障诊断 TCP

评论(0) 引用(0) 浏览(96)

总算是修好邮件通知功能了

作者:V君 发布于:2022-5-28 19:15 Saturday 分类:小服杂记

这次排查过程我只能用下面的两张梗图来形容。

首先不知道如何断点调试运行在 Apache 的 PHP,那就只能找到输出日志的方法,然后拼命打log。(第一张梗图)

其次打了 log 得到的错误信息莫名其妙,可能是发邮件的库和自己搭的邮件服务器存在兼容问题,调着调着莫名其妙又通了,然后去掉打 log 的代码,做出思考状。(第二张梗图)

点击查看原图

点击查看原图

评论(0) 引用(0) 浏览(128)

【奇怪的工具】压缩包转换器,不产生临时文件

作者:V君 发布于:2022-5-27 23:32 Friday 分类:我的应用

TL;DR:

首先是 源代码 和作为 Release 的 Win64 DEMO
然后是 DEMO 的用法:
SevenRepacker.exe [/out-dir:d:\zips] d:\archives\1.7z d:\archives\2.7z …
  - 输出路径 /out-dir: 可选参数,不指定就会输出到原始文件旁边
  - 输入文件 支持动态个数
限制:输出格式被固定成 zip 压缩算法固定 Copy
限制:目前只确定输入文件是 Copy 算法的 7z 能顺利转换成 zip,其他非预期情况未处理

听简单我扯扯:

我习惯把看过的动画片打包归档,用的是 Copy 算法,视频文件重新压缩无意义。 早些时候打了一堆 7z 包,以为只要是 Copy 算法就可以轻松 mount ,用到才发现并没有支持把 7z 归档 mount 成虚拟驱动器的开源(或免费)软件,自己常用的 ImDisk、Pismo File Mount、OSFMount 全都不支持 7z (Pismo File Mount 支持 zip),那就得安排一下做转换了,把这堆 7z 转成 zip 。

手动解开再压缩是不可能手动的,还得找地方放临时文件。在昨天临睡之前古狗了一下转换压缩包的方法,查到的方法不外乎都是先解压,再重新打包,顶多就来点脚本。太没意思了。

关掉浏览器,想想能不能自己写一个小工具,反正只要能流式读取压缩包,那就能做到像管道那样直达目标。前些年我用过的 SevenZipSharp 库就提供了流式 API,稍微做点 tricks 就能搞定了,于是针对我这个使用场景的实现就出来了,作为 demo 放出来。

这个月依旧差点找不到值得发表的内容 _(:з)∠)_

标签: 软件开发 C# 命令行

评论(0) 引用(0) 浏览(106)

使用 Web API 下载 PDF 遇到的坑

作者:V君 发布于:2022-4-28 20:13 Thursday 分类:挖坑经验

TL;DR:

  • 将 XHR 的 responseType 设置为 "arraybuffer"
  • 如果使用 axios 则要在参数对象加 responseType:'arraybuffer'
  • 获取响应之后用 response 创建 Blob 然后交给 ObjectURL(别忘记type)
  • 将创建好的 ObjectURL 交给 IFrame 直接呈现,或者交给 A 标签实现下载

听我扯扯:

前后端分离的项目中遇到需要预览(下载)PDF 的需求,而且用了基于请求头而非 Cookie 的验证方式,因此无法走 IFrame 直接把 API 的 URL 送进去。绕了一圈远路尝试解决验证问题,无果。

回过头想起可以让 XHR 下二进制数据的做法,咕狗“XHR PDF”找到爆栈上面的《XMLHttpRequest to open PDF in browser》。(其实这时候已经看到有回答在 XHR 指定 type 为 'arraybuffer' 了)然鹅把 BLOB 链接放进 IFrame 之后,文字和图片全都不见了,只剩下几页空白页(页数正确)。已经确认过后端输出的 PDF 正常,而通过 A 标签的 HRef 放入 BLOB 连接下载的文件大小跟服务器响应的不一样,体积大约翻了一倍。

在浏览器调试脚本发现 XHR 的 reponse 是字符串,在控制台用 typeof 确认过眼神,这时候只能去咕狗了,“xhr binary data”,第一条返回 MDN 上的《发送和接收二进制数据 - Web API 接口参考》,里面提到了 XHR 的 responseType 属性,设置成 "arraybuffer" 才能避免浏览器把输出内容错误地当成文本来解析。

至此问题完美解决,可喜可贺!这个月差点找不到值得发表的内容 _(:з)∠)_

标签: javascript Web技术 前端工程

评论(0) 引用(0) 浏览(157)

Powered by emlog 去你妹的备案 sitemap