# 杂谈

如题,分享(记录一下我使用的系统相关软件)

火绒

火绒是我用来挂在后台的杀毒软件,还算是能用就是了。有的时候也会对在网络上下载的文件进行杀毒预防一下。

Glary Utilities

Glary Utilities是一款功能强大的软件,尤其是在Glary Utilities 6之后ui界面得到了极大的改善。

其里面有十分丰富的功能,但是我一般比较常用的就是分析磁盘文件占用情况以清理不需要的大文件。 ### 分析磁盘文件占用

Glary会自动扫描指定文件,然后展示每一个文件/文件夹所占用的当前文件所有文件的百分比,通过这个功能我们能快速锁定占用内存的罪魁祸首,从而对其实现精准打击。

CCleaner Professional

CCleaner也有比较丰富的功能,其中比较强大的主要是其中的注册表清理以及驱动更新。

CCleaner-pro(提供最新的破解方法) - 哔哩哔哩 (bilibili.com)

驱动更新

我之前在网络上找我的网络适配器的最新驱动更新没有找到……然后cc直接给我扫描了一下一键装好了。

注册表清理功能

ccleaner的注册表清理功能也很强大,面对无效的文件格式,可以一键将其清理

比如bandzip会自动抢占.zip的默认打开方式,当你将bandzip默认打开取消掉之后,每次启动.zip都会询问要以何种方式打开,并且无法选择默认打开,只能选择仅一次。

当然,你也可以手动将其在【默认应用】那里重新赋值,但是十分麻烦,因为压缩包的格式挺多的

Dism++

dism++一般用来清理系统文件比较靠谱(但是同时也比较激进),它能更深层次地清理系统文件。

阅读全文 »

# 效率工具

怀疑性认知的六条原则

  1. 我碰到的是什么内容?
  2. 信息完整吗?假如不完整,缺少了什么?
  3. 信源是谁/什么?我为什么要相信他们?
  4. 提供了什么证据?是怎样检验或核实的?
  5. 其他可能性解释或理解是什么?
  6. 我有必要知道这些信息吗?

Reference

《真相:信息超载时代如何知道该相信什么》

阅读全文 »

# 杂谈
# 耳机

如果你的耳机在百元以下(蓝牙不清楚,不考虑蓝牙耳机),那么首推一定是换有线耳机,大约价格在500上下就可以,(300到700左右),选择国产的耳机性价比高,基本可以获得前80%的体验。

再者,如果经常用手机或者平板听歌,请买一个解码器,注意,是带芯片的解码器,价格在50到100之间就可以,太便宜的容易坏。如果以上耳机加解码器都有了,听音乐就已经完成90%了。

剩下的无损音频,加上四位数的耳机,还有几百上千的解码器都是在提升剩下的10%。总体下来 耳机十解码器一共在500元上下,就可以达到一个比较理想的音质了。50以下到几百的耳机提升真的很明显,50的耳机几乎没什么声场,解析力还差。

阅读全文 »

# 杂谈
# 键盘

正如题目,在这里简单聊聊键盘损坏的检修以及机械键盘结构的分析。

背景

在昨天,本人发现机械键盘的反斜杠失灵了,在更换设备以及更换键盘之后锁定是键盘本身的问题。

遂将键盘拆开来分析了一下机械键盘出问题的地方,在这里记录一下。

更为详细的内容可以参考:聊聊机械键盘的结构。 - 知乎 (zhihu.com)

键盘损坏的检修

排查是否是电脑本身的问题

键盘损坏无非就是要么是电脑的驱动出了问题或者是该按键被应用占用了,优先排除电脑本身的问题。当有其他设备的时候,直接将键盘连接到其他设备上就知道是不是电脑的问题了,但是有的时候身边并没有其他设备,这个时候可以使用openArk来查询。

openArk可以查询所有的快捷键占用情况,当然,它还有许多其他的功能,但是我并不熟悉。

排查键盘的驱动

有的键盘是可以添加配置设置的。当键盘配置不正确可能会导致键盘失灵的问题,这个时候需要尝试将键盘的配置重置为默认配置即可。

键盘设备的问题

如果上述操作后,键盘仍然没有恢复正常的话,那就需要考虑是键盘设备的问题了。键盘设备的问题可以通过了解键盘的构造来了解,具体在下面键盘构造讲解。

键盘结构

本人键盘的结构为Bottom mount,即只有Plate被固定在盒体上,PCB和键轴为插栓结构固定在Plate上。

c026784cb092d7f463db9ca305e2b124.png

检查是键盘哪个部位的问题,可以按照以下步骤尝试:

  1. 直接短接PCB上面的开关,观察是否触发按键。如果没触发,恭喜你就是PCB有问题,这种问题很难自己修好……很不巧的是,我就是这种故障
  2. PCB正常,检查是否是键轴的问题。通过更换键轴就能够很方便地检修。

以上两步就能够检查出到底是哪里得问题了。

阅读全文 »

# 杂谈

本文来自于nga论坛,本人看了十分有感触,在这里记录一下。

不得不说英国佬政治素养还是有的

续孤兰

级别:学徒 威望:1 发帖:3227

今天拿着presentation找导师修改,一边改一边

跟教授闲聊,就说到国际政治了

不得不说英国佬玩政治上,想法和眼光还是有的

(所以您大英帝国玩脱欧怎么玩成这样的)

不管媒体怎么宣传,高级知识分子对局势的见解还是可以的,和老头子聊了聊,我对中美国际局势感觉有了个全新的视角

和他聊聊贸易战,我说中国其实并不愿意贸易战,而且也并没有主动发动贸易战,美国的很多指责都是无稽之谈

教授说他知道,但这根本不是本质与重点,他认为贸易战本质上依旧是中国对美国的战略进攻,不管贸易战是不是美国主动挑起的,就算是,那也不如说是中国人逼迫美国人主动挑起的贸易战这又要从98年到08年以及08年至今的局势演化说起了

美国依靠美元,美军与美国价值观从全世界收割社会财富与吸引人才喂养美国本身,削弱他国实力,从布雷顿森林体系解体以来,已经形成了一套系统的组合拳与方法,而苏联的解体加剧了这种依赖

具体方法是这样:

依靠美国的影响力与国力支撑的美元以贸易逆差的方式为全世界提供流动性,让美元在全世界流动,我们可以把这批美元看做是鱼苗,羔羊。然后依靠美国的军事实力和国际影响力,人为的制造地区冲突与危机,可以是很多形式,政治危机,经济危机,加息,甚至国际冲突从而使特定国家资产价格相对于美元大幅度波动,本币剧烈贬值,从而以超低代价收割他国的优质资产与外汇储备,一方面让这批增值的财富收入美国囊中大餐一顿吃个饱,一方面回收美元的流动性,为下一轮收割而做准备,释放和回收美元流动性的中间的具体操作就是加息与降息

整个流程已经形成一套系统的组合拳,就像养羊一样,放出去吃草,出肥了收割

这套方法很多时候行之有效,为此美国才建立起了它的全球体系与推行全球化,为美元的自由流通设立保障

但从98年以后,这种方式遭到了极大的挑战,根本原因在于中国

中国的崛起并不仅仅是一个顶替了苏联位置的强国那么简单,它的存在和方式对美国主导的国际秩序造成了巨大的挑战

中国的崛起是美国21世纪以来的最大的挑战与隐患,政府控制力强,并且在金融领域对资本有诸多管制措施,使得美国难以单单通过资本操作方式收割中国的财富

然后中国日渐增强的综合国力和稳定的社会与政治环境,使得美国更难以制造政治危机的方式,制造中国的资产价格跳水,哪怕制造了,由于中国的管制措施财富也难以流出中国

然而从98年以来,通过制造国际冲突的方式造成中国内部不稳定以达到更换一个可以让资本自由流通的政府的方式已经无数次宣告失败,并且花费了美国很多“成本(Cost)”, 包括金钱上或者国际影响力上

可以说,21世纪以来,中国对于美国,就是一个蒸不烂,煮不热,锤不扁,炒不爆的一粒铜豌豆。

美国除了直接宣战以外,已经没有什么手段能打断中国的上升进程了

但如果仅此而已,中国说不上的是美国的心腹大患,或者换句话说,肯定算不上比苏联更严重的威胁

中国之所以对美国而言比苏联更危险的原因在于,它采取了完全迥异于苏联的方式,对美国的根基在进行侵蚀和腐化

根本原因在于,中国的崛起不但使得中国自己成了美国无法收割的对象,并且使得美国以往的对其他国家的收割组合拳效果大打折扣

中国首先保证了自己不被美国收割,然后通过持有大量的美元外汇储备,在美国收割他国的时候,向美国“收一道税”,具体表现为使用自己的巨额外汇储备在美国制造了“危机”后,和美国人一道低价收购资产(包括不限于油田的开发权,竞标基础设施建设,或者只是收购一些资源,或者参与重建或者投资)

这就等于,对美国来说,回到手里的只有美元而非财富,只有通胀而非实际的好处。他称之为对美国的“寄生”。

但这种趋势在08年以前并没有让美国人警惕,或者说,并没有让美国人疼到警惕

转折点在2008年、经济危机使美国的力量受损,根据以往,美国需要找一个对象输出危机并且收割财富。中国毫无疑问不可能,但美国发现不但是中国不可能,连带对其他国家,也收不到多少好处了。

原来在于中国从改革开放起就在积累实力,在2008年美国受损的实力和中国自身一直没有停下来的实力积累,到达了一个微妙的引爆点

我不知道你们中国人的看法,但在2008年后,中国的国有企业和基础设施建设,忽然在影响力和等级上都提高了一个级别。中国忽然对推动人民币国际化和输出产能开始关注,在几年后更是推出了一带一路计划

从2008年后,美国发现一个事实,使用以往的收割手段,不但是有没有利益的问题,而是可不可以回本的问题。

原因在于,以往,在认为制造资产价格波动后,能以美元低价收购优质资产并且回收流动性,虽然被中国截留一部分,但绝大部分收益仍然是美国的。

但08年后,大部分收益居然被中国收取了。

原来在于,08年以后大量的货币互换协议与一带一路计划以及中国开设的诸多国际融资通道(中国主导的),以非洲为例,中国改变了以往直接使用美元收购资源或者资产的方式,向部分第三世界国家提出,以工业制品和基础设施折算美元,另一国以本国优质资产的期权折算美元,达成交易。

双方仅仅是声称使用了美元,实际而言一美分都没有流动

结果在美国制造了各种地区冲突与危机以后,中国以这种方式介入,它不但是被截留了收益的问题,甚至可能没有收益。例如伊拉克,中国以基建和产品出价,伊拉克以基建收益的期权或者其他资产的期权抵押,达成交易。这中间仅仅是物资的流动,美国无法在其中以美元收割任何收益。并且中国还有自己的资金渠道(昆仑银行等等)

美国人终于发现,以往中国人只是用吸管唑一口,以前或者是九一分,四六分,现在可能是三七分,中国七,美国三,甚至有时候美国人还要赔本

这是挑战了现在美国的根基

布雷顿解体以来,美国为了更好地收割,几乎改变了它的国家形态与政治观念,构建了美国自己的全球体系,苏联解体还加剧了这一趋势,一切都是为了更好地使得资本流通,方便美国收割利益,包括去工业化与让金融业高度繁荣。他的国家为全球化而改变,他的观念也为全球化而改变,现在的美国已经不是1939年那个美利坚了

为了构建和维持这个全球体系,美国付出了巨额的成本,不得不维持超高的军费和巨额的贸易逆差,但只要可以收割下去,那么美国的贸易逆差和高额军费都是值得的,都能得到超额回报

但现在而言,美国付出了成本,消费了影响力,却得不到相应的收益了,钱你出,恶人你做,桃子我摘

为了压制俄罗斯,持续压低国际油价,并且早年在中东干涉抬高了国际油价,使得自己的一票国内石油公司为了赚更多的钱,开采石油的技术研发上升了一个台阶,甚至使得美国自身因为页岩油的开发都变成了产油国

也就是说,美国现在已经无法以制造地区紧张局势然后以石油美元得到很高的收益了,而且哪怕真的抬高油价,也不过是为了俄罗斯输血,甚至拉丁美洲的委内瑞拉这些国家也会压制不住

然后低价收购优质资产呢?就拿伊朗举例,美国能够战胜伊朗吗?毫无疑问。

但如果在要伊朗扶持一个亲美政权,比如扶持逊尼派政府,需要美国大量输血,否则,塔利班就是例子,新政府如果没有美国的持续输血毫无疑问坐不稳政权,但如果持续输出,一个阿富汗加伊拉克就差点把全盛的美国放干,以现在联邦政府而言,伊朗那么大的地方维持一个亲美政权,是天方夜谭

而且先不说一个被战争摧毁的国家到底有没有所谓的“优质资产”,哪怕有,新的政府为了战后重建,也会拍卖优质资产,然后拍卖优质资产为了什么?还是为了筹集资金以进行战后重建

那么中国可以直接以基建出价,新政府用资产期权抵押,有美国人是什么事情?

铁路,电力,通信网,公路,为了收割全世界而自己去工业化的美国在这些基建领域已经完全无法与中国竞争了,哪怕尖端技术仍有优势,但缺乏市场也缺乏资金的联邦政府已经没有逆转这个趋势的能力了

联邦政府已经没钱了,这是个显而易见的事实,而对大国而言,调头是一件困难的事情,如果能轻易改变生存方式或者社会制度,那么苏联也不用解体了,这也就是为什么美国必须着手直接的,有力的,实质性的开始打击中国

中国以这种方式活着一天,美国的全球体系都有解体的风险,联邦政府的财政收入已经发岌可危,然而不得不花的支出确是年年高攀

再加上美国每年所创造的财富,到底有多少进了私人的口袋,有多少进入联邦政府的国库,是要打一个疑问的,以往增量时期无关紧要,在08年至今美国进入消耗存量时期,种种以往的社会问题都会日渐尖锐

如果美国抛弃的它的全球体系回归门罗主义也是一条道路,但教授对此持悲观态度,国家体制和社会与观念剧变,是催生混乱与内战的最好温床,如果大国转向如此容易,苏联也不用亡国了

所以他觉得贸易战本质上是中国对美国的战略进攻,无论是不是美国主动挑起,其实都是中国在逼迫美国做出的战略抉择,美国对于发动贸易战并没有必胜的把握,甚至把握有没有超过一半也很难说,但它仍然不得不去赌这个一半一半,这对于国家战略的选择而言,无疑是最糟糕的情况

看似有选择,实际上没有,因为只有糟糕和更糟糕的区别。如果不解决中国问题,美国哪怕找到再多的钱包,也填不饱自己的肚子,甚至会越来越饿。加州高铁项目的失败证明了美国目前社会运行的成本极高,金融和法律障碍认为的拉高了整个社会的运行成本,对华贸易战风险极大,但联邦政府已经别无选择。

以上都是交流时候提到的,当然我用自己话翻译了,不过真是收益良多。

2019-09-08 23:28

阅读全文 »

# C++

简介

windowsToast是一个集成了window的toast消息提醒的第三方c++库,可以十分便捷地在windows下显示toast消息提醒。

使用步骤

导入库

如果担心冲突的话就导入之后在每一条wintoast的命令前面加上wintoastlib:: 即可,但是我无所谓,所以说直接导入后加using namespace std;

一般还需要包含windows库,所以说一并加入

1
2
3
4
5
#include <string>
#include "wintoastlib.h"
#include <windows.h>

using namespace WinToastLib;

定义ToastHandler

ToastHandler定义了当展示的toast消息接受不同的响应之后所执行的命令,通过继承IWinToastHandler 我们可以自定义自己想要的响应程序。

查看IWinToastHandler 的定义我们得知其有以下几种状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class IWinToastHandler {
public:
enum WinToastDismissalReason {
UserCanceled = ToastDismissalReason::ToastDismissalReason_UserCanceled,
ApplicationHidden = ToastDismissalReason::ToastDismissalReason_ApplicationHidden,
TimedOut = ToastDismissalReason::ToastDismissalReason_TimedOut
};

virtual ~IWinToastHandler() = default;
virtual void toastActivated() const = 0;
virtual void toastActivated(int actionIndex) const = 0;
virtual void toastDismissed(WinToastDismissalReason state) const = 0;
virtual void toastFailed() const = 0;
};

对于这些未定义的虚函数,我们对其继承并且加以定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class MyToastHandler : public WinToastLib::IWinToastHandler {
public:
void toastActivated() const {
std::cout << "The user clicked in this toast" << std::endl;
exit(0);
}
void toastActivated(int actionIndex) const {
std::cout << "The user clicked on action #" << actionIndex << std::endl;
exit(16 + actionIndex);
}

void toastDismissed(WinToastDismissalReason state) const {
switch (state) {
case UserCanceled:
std::cout << "The user dismissed this toast" << std::endl;
exit(1);
break;
case TimedOut:
std::cout << "The toast has timed out" << std::endl;
exit(2);
break;
case ApplicationHidden:
std::cout << "The application hid the toast using ToastNotifier.hide()" << std::endl;
exit(3);
break;
default:
std::cout << "Toast not activated" << std::endl;
exit(4);
break;
}
}
void toastFailed() const {
std::wcout << L"Error showing current toast" << std::endl;
exit(5);
}
};

我们也可以对于这些响应写出更为复杂的交互逻辑,但是在这里仅仅展示不同情况输出不同内容提示的代码。

定义WinToastTemplate

WinToastTemplate 可以理解为所需要展示的消息提示的具体内容,下面是一个简单的函数示例,包含了从初始化定义到自定义格式和内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static void ShowNotification(std::wstring& appName, std::wstring& firstLine, std::wstring& secondLine, std::wstring& imagePath,std::wstring& hero_imagePath) {
std::wstring appUserModelID = L"SystemProxy_Agency_Tool";

//这里是初始化消息提示的appnamde和appID
//appname不能包含特殊字符,appname中的_会被转化为空格
WinToast::instance()->setAppName(appName);
WinToast::instance()->setAppUserModelId(appUserModelID);

//这里是设定格式为ImageAndText02
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageAndText02);

//设定具体的文本内容和图片路径
//WinToastTemplate::CropHint::Square指的是将图片裁剪为正方形

templ.setTextField(firstLine, WinToastTemplate::FirstLine);
templ.setTextField(secondLine, WinToastTemplate::SecondLine);
//展示小图片
templ.setImagePath(imagePath, WinToastTemplate::CropHint::Square);
//展示大图片
templ.setHeroImagePath(hero_imagePath);

//展示toast,样式为我们设定好了的templ,返回函数为我们指定的MyToastHandler
if (WinToastLib::WinToast::instance()->initialize()) {
WinToastLib::WinToast::instance()->showToast(templ, new MyToastHandler());
//消息延时5s后自动退出
Sleep(5000);
}
}

更多的消息提示样式可以看看作者的库里面写的说明: mohabouje/WinToast(github.com)

或者可以看看这位大佬写的示例: C++: Windows Toast Notification - CodeProject

调用消息提醒

使用这种方式创建消息提醒有一个缺点,就是创建出来的命令提示符的黑框会一直保持到消息消失,十分的丑。

所以说可以选择使用bat的start /b间接启动,来使得黑框最小化:

1
start /b "" E:\AgencyProxyTools\messageBox.exe
阅读全文 »

# C++

argc和argv是什么

C/C++语言中的main函数,经常带有参数argc,argv,如下: 

1
2
3
4
5

int main(int argc, char** argv)

int main(int argc, char* argv[])

这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,运行命令为:

1
hello.exe Shiqi Yu  

那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。   
### argc和argv的使用

下面的程序演示argc和argv的使用:  

1
2
3
4
5
6
7
#include <stdio.h>
int main(int argc, char ** argv)
{
int i;
for (i=0; i < argc; i++)
printf("Argument %d is %s.\n", i, argv[i]);return 0;
}

假如上述代码编译为hello.exe,那么运行 

hello.exe a b c d e
将得到  

1
2
3
4
5
6
Argument 0 is hello.exe.  
Argument 1 is a.
Argument 2 is b.
Argument 3 is c.
Argument 4 is d.
Argument 5 is e.

运行 hello.exe lena.jpg
将得到  

1
2
Argument 0 is hello.exe.
Argument 1 is lena.jpg.

阅读全文 »

# bat

1. start 命令的使用方法

start 命令用于在新窗口中启动应用程序、命令或批处理文件。使用 start 命令时,可以指定要启动的程序的路径和命令行参数。下面是 start 命令的基本语法:

1
start ["title"] [/d path] [/i] [/min] [/max] [/separate | /shared] [/low | /normal | /high | /realtime] [/wait] [/b] [command/program] [parameters]

其中,方括号表示可选参数。下面是各个参数的详细说明:

  • “title”: 可选参数,指定窗口标题。
  • /d path: 可选参数,指定启动程序的工作目录。
  • /i: 可选参数,以新窗口中的分离模式启动程序。
  • /min: 可选参数,启动程序时最小化窗口。
  • /max: 可选参数,启动程序时最大化窗口。
  • /separate | /shared: 可选参数,指定启动程序时使用的窗口类型。/separate 表示在新的独立窗口中启动程序(默认值),/shared 表示在共享控制台窗口中启动程序。
  • /low | /normal | /high | /realtime: 可选参数,指定启动程序时使用的进程优先级。/low 表示低优先级,/normal 表示正常优先级(默认值),/high 表示高优先级,/realtime 表示实时优先级。
  • /wait: 可选参数,等待程序结束后再退出。
  • /b: 可选参数,以后台模式启动程序。

2. 示例

下面是一些示例,演示如何使用 start 命令启动不同类型的应用程序:

  • 启动记事本:
1
start notepad.exe
  • 启动计算器:
1
start calc.exe
  • 启动 Internet Explorer:
1
start iexplore.exe "http://www.example.com"
  • 启动 Windows Media Player:
1
start wmplayer.exe "C:\Users\UserName\Music\Sample.mp3"
  • 启动命令提示符:
1
start cmd.exe
  • 启动 PowerShell:
1
start powershell.exe

除了启动应用程序外,start 命令还可以启动批处理文件。例如,可以创建一个名为 “test.bat” 的批处理文件,其中包含以下命令:

1
start notepad.exe

然后在命令提示符中执行以下命令来运行该批处理文件:

1
test.bat

这将启动记事本程序。

阅读全文 »

# bat

下面是一个简单的代码用于检测clash.exe是否运行:

1
2
3
4
tasklist|findstr -i "notepad.exe"
if ERRORLEVEL 1 (
echo 程序未启动
)

示例

运用这个我们可以写一个自动保持notepad启动的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

@echo off
title restart 自动化脚本
:again
tasklist|findstr -i "notepad.exe"
if ERRORLEVEL 1 (
echo notepad is off in %Date:~0,4%-%Date:~5,2%-%Date:~8,2% %Time:~0,2%:%Time:~3,2%
start "" "C:/Windows/notepad.exe"
)
cd /d "D:/"

choice /t 30 /d y /n > nul

goto again

阅读全文 »

# bat

在bat中实现延时有以下几种方法(我见过的): ## 1. 使用ping命令实现延时

使用ping命令可以实现延时的效果,命令如下:

1
ping 127.0.0.1 -n 11 >nul
  1. -n 指定ping的次数,每次大概间隔1s,>nulping过程回显信息给屏蔽
  2. ping命令实现的延时,时间精度:大约1s,内存占用:ping命令所占用空间
  3. 注意闭坑:ping 从第1次发出请求到接收到回显数据几乎是瞬间的,所以你如果想实现10秒的延时,需要设置-n 为11(至少针对ping 127.0.0.1 回环地址是这样),网上很多说需要多少秒,-n参数值就设置多少秒, 真是有些误人子弟呢!
  4. 我还从网上看到过使用-w参数,指定超时等待时间来作为延时时间的,这不是可能,除非指定的地址ping不通,否则这个延时实现根本不可靠

通过超时来延时

1
2
3
4
5
6
7
timeout /t 4 /nobreak >nul
````

## 通过Choice的超时判断作为延时

```bash
choice /t 30 /d y /n > nul
阅读全文 »
0%