虽然衣服自己洗不知道为什么,但是运行下面后的命令:
sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
再安装mysql就不会有错误提示了。
sudo apt-get dist-upgrade
linux命令未免也太神奇了一点吧。
工作中的一个小工具,使用了RestSharp 来向JIRA系统中同步信息。前段时间说是安全升级,更新了jira的ssl证书,结果就导致了同步流程的失败,后来发现原因就在于ssl证书使用了自签名的ssl证书。不知道为什么,我想到了12306的自签名证书。
移除NuGet引用,下载最新版本的源码,重新编译还是一样的问题。
网上也有很多人询问,大部分都可以解决问题的方法如下:
client.RemoteCertificateValidationCallback = new RemoteCertificateValidationCallback((a,b,c,d)=> { return true; });
不过对于我这边没有效果。后来终于在某个小帖子上发现了一句话,一尝试果然解决了问题。
在需要发送请求前,需要先设置协议类型:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
从感觉上来说,这个问题应该是仅仅和服务器设置有关,不一定适合所有的玩家。不对,是同学,最近玩游戏有点过份了。
在科目三通过后,第二天就赶紧约科目四的考试。好在科目三的时候就已经把科目四的视频都看完了,不用为这个再等待几天了。
在做手机上的模拟题的时候,为那个侧滑和拉紧急制动器的题目简直是绕晕了。前后几个题目的说法都不一样,很是让人崩溃。
科目四考试只能约上午,开始考试时,一如既往地无法识别指纹,只好重新录入指纹然后排队。在科目一考试的时候发现机器反应特别慢,手快总点击下一题。这次考试学乖了,慢慢地等。
好在题目中没有出现让人崩溃的转向紧急制动的题目了,很顺利地做了下来。
然后就是去交成绩,拍照片。
由于要等到中午的时候才可以拿到驾照,就四处晃悠了下吃饭。最后一次吃饭点了个酸辣粉算是个尝试吧,只能说醋放多了。吃饭完退卡,以后再也看不到楼下那个大胸白皮肤的妹子了。
等到最后一打才拿到驾照,去地铁的班车开走了,好在国贸的车还在,那天真是幸运。
从2月17号报名,到5月18号拿证,恰好3个月的时间,除了驾驶技术本身 的学习外,压离合时对耐心的培养,和陌生教练的人际关系沟通等都是收获。
11号的时候终于通过科目三了,没有再额外的折腾实在是太幸运了。
考试前一天集中训练,教练比较随意,上午每个人随便跑了2圈,下午又跑了一圈。和别的学员沟通后发现他们都有上过5档,下午的时候也胆大了一把。大清早地起床,跑老远过去就为了这3圈。
到下午的时候考场分配才出来,虽然没有分配到东三考场,但是北一也还好就是,比北二好的地方在于北二可能会有一个洒水车接水。同事考试时被抽到电子考试,据说也还蛮好的。
第二天考试,北一一共3辆车,每组总共有12个人左右,我是第8个。考官一上来就说道路限速70,暗示大家尽量快点。好在集训时上过5档,心里踏实很多。下个即将考试的学员会随着本次考试一起,算是个认路熟悉的过程。
轮到我上车时,我就直接奔后座准备坐后面,结果木想到马上让我上车,完全不按照套路出牌。原来是上波的人,前面的那个考试没有通过,然后考官就直接让后面的那个人开回来。
考官似乎很着急,夜间模拟考试也就选择性地抽考的。上路后就赶紧加速加档,路口换2档,只开了一个路口就让调头,心里还正在高兴呢。到下个路口要左转弯,刚转过去考官就踩了刹车说车道错了。当时心里慌的也不知道具体情况,靠前是说2个行车道都可以走的,赶紧陪笑脸。苦逼的不行寻思着还得再等2周来补考了。
没有想到考官说第二次考试开始,才想起来原来还有一次机会。起步不久前面别的驾校也没有让行直接就起步了,只要赶紧减速到停车,接下来居然熄火了一次,好在考官也没有说什么。
剩下的几百米就顺利多了。停车后签字,顺利通过。
科目二和科目三2次都是在第二次考试时通过,真算是有惊无险。不过心里痛快多了,最难的部分已经过去了。
过完年后,顶不住压力就去报了驾校,价格实在是超出了我的预期。为了有更多的选择余地,我选择了周一到周日的班。
拿到书还没有怎么看过,到后面去录指纹的时候,别人都把在线视频看完了,我才着急起来。花了几个晚上把书给过了一边,又从网上下载了**宝典开始做题。
到考试的前一天晚上,居然发现**宝典里有一个栏目专门是收集容易出错的题目。在考试时居然就派上用场了,好几个题目都来自那里面。没有想到的是交警手势的题目居然做对了。
排队进考场,登陆不成功,指纹识别不了,只好悻悻出来先录指纹等着再次叫号。
等再次进去时就不那么紧张了,指纹也识别出来了,登陆系统后就开始做题。做到大概有20多道题目的时候,看到右边很多×,心里就焦虑,后来再一数,差不多有10几个了,寻思着这个应该过不了了,本来想着直接交卷的,但是又不甘心,因为心里觉得很奇怪有的题目明明是做对了为什么打×呢。
那个系统也是慢的不行,点击下一题看着都没有响应。于是就随便点着鼠标。
直到第二次弹出做题错误提示,我才明白原来我理解错了。右边的×并不表明我做错了,而是说我的答案选择的是错误这项。界面也没有个说明,好在我没有放弃,一路认真做过来的。虽然错了2题,也做到大概40题左右的样子吧,后面就宽心慢慢做了,居然一题都没有错。
最后交卷,出门打印成绩单,签字上交。
科目一就这么有惊无险的通过了。下面就是科目二了,对于我这样从来没有碰过方向盘的人来说,心里总是没有底。
有时候想快速写一段C++代码来验证某个功能,感觉使用VS就过于重量级了,关键是衣服自己洗比较洁癖,不喜欢看到有无用的工程项目。所以一直想有一个轻量级的编辑器可以快速编译验证。
于是衣服自己洗发现了CodeLite 和 CodeBlock这2个跨平台,相对轻量的工具。
使用过程中,发现CodeLite的命令行输出中中文显示乱码,一开始还以为自己是软件没有安装好,重新下载安装还是不行。后来经过一番搜索,网上观点认为是 G++ 的问题,需要额外添加编译选项。
选择工程项目,右键属性,切换到Compiler,在 C++ Compile Options 里添加一个选项 -fexec-charset=GBK; 即可。其实还可以把这个配置单独新增进去,以后就只用勾选就可以了。
特别需要说明,设置完成后,需要把项目清理重新编译,不然看不到效果,衣服自己洗在这里被坑了好几次了。
最近在使用爬虫抓取数据并保存到本地目录中,并且会时不时点进去看看,看着文件数量的不断增长,衣服自己洗得到了极大的满足感。由于数据量比较大,每次进入文件夹,资源管理器都会比较卡。
所以衣服自己洗就想有没有什么方式可以仅仅查看文件数量的变化。经过一番搜索,发现 PowerShell 脚本可以满足,并且还可以使用Net Framework的内容,真是为powershell点赞。
脚本内容如下:
[System.DateTime]::Now.ToString() + ” ” + [System.IO.Directory]::GetFiles(‘L:\tmp’).Count
C#对于窗体居中很简单,只需要简单设置一个属性就可以了,但是对于C++,还需要额外的写点代码。下面是衣服自己洗分享的代码,可以直接拷贝到项目中。
inline static BOOL CenterWindow(HWND hwndWindow,bool isDesktopParent = true)
{
HWND hwndParent;
RECT rectWindow, rectParent;
hwndParent = isDesktopParent ? GetDesktopWindow() : GetParent(hwndWindow);
//make the window relative to its parent
if (hwndParent != nullptr)
{
GetWindowRect(hwndWindow, &rectWindow);
GetWindowRect(hwndParent, &rectParent);
int nWidth = rectWindow.right – rectWindow.left;
int nHeight = rectWindow.bottom – rectWindow.top;
int nX = ((rectParent.right – rectParent.left) – nWidth) / 2 + rectParent.left;
int nY = ((rectParent.bottom – rectParent.top) – nHeight) / 2 + rectParent.top;
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
//make sure the window never moves outside of the screen
if (nX < 0) nX = 0;
if (nY < 0) nY = 0;
if (nX + nWidth > nScreenWidth) nX = nScreenWidth – nWidth;
if (nY + nHeight > nScreenHeight) nY = nScreenHeight – nHeight;
MoveWindow(hwndWindow, nX, nY, nWidth, nHeight, FALSE);
return TRUE;
}
return FALSE;
}
衣服自己洗使用jsoncpp来解析项目中使用的json字符串,后来发现一个问题就在于jsoncpp 不支持unicode编码的中文字符。
网上搜索了一下,一种比较弱侵入性的方法如下:
打开json_tool.h文件,找到 codePointToUTF8 方法,修改 else if (cp <= 0xFFFF) 代码段里的内容,添加额外的处理。
//添加中文unicode编码
if((cp >= 0x4E00 && cp <= 0x9FA5) || (cp >= 0xF900 && cp <= 0xFA2D))
{
wchar_t src[2] = { 0 };
char dest[5] = { 0 };
src[0] = static_cast<wchar_t>(cp);
std::string local = setlocale(LC_ALL, NULL);
setlocale(LC_ALL, “chs”);
wcstombs_s(NULL, dest, 5, src, 2);
result = dest;
setlocale(LC_ALL, local.c_str());
}
//下面 else 里代码为原始代码
else
{
result.resize(3);
result[2] = static_cast<char>(0x80 | (0x3f & cp));
result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
result[0] = static_cast<char>(0xE0 | (0xf & (cp >> 12)));
}
然后重新编译即可。
最近工作中衣服自己洗有碰到一个调用dll的问题,错误代码是HRESULT: 0x80131515 。
后来发现是dll权限的问题,对于调用失败的dll,鼠标点击右键,属性。如果发现底部有“解除锁定”的复选框,勾选复选框,然后确定即可。
产生问题的原因是操作系统提高了安全性,二进制文件如果从网络上下载回来的话,就可能会有该标记,如果不解除直接调用的话,就会产生HRESULT: 0x80131515 错误。