2020-08
21

懒精自动化

By xrspook @ 8:24:58 归类于: 烂日记

对别人来说,做某件事就是从系统上读取某些数字,抄在纸上,然后不断地敲计算器,得出某些数据,然后再按照某些格式整理成别人要的样子。之前我也是这么干的,但是我觉得,这实在是太累人了。我要做的不仅仅是读取系统上的数据,我做的是读取我自己的数据,然后跟系统上的做比对。做的东西必须是最小单位。明细对好了,后面的汇总是水到渠成的事。我觉得,汇总数据这种事,规则我定下来,结果应该是自动生成的,管好我的明细数据,汇总数据就不会出乱子。汇总数据出来了以后,还得按照某些格式整出来,这其实是一个填坑的过程,但是应该怎么填呢?逻辑的思路就是,如果有数据就展示出去,如果没有数据,就为空。这是主要思路,但某些细节问题其实也是需要考虑的,比如说数据与数据之间的标点符号:逗号,分号,句号,冒号等等。没有数据的时候,那个地方是空,但是在连接两个数据之间,有些人默认带入了标点符号,于是就会出现一个神经质的状态。数据与数据之间有一大堆莫名其妙的标点符号,正常情况下,那些东西都不应该存在。按照人的思路,那些东西根本不可能存在,但为什么有那些东西呢?显然是那个做判定的人没有把标点符号写到判定里。什么时候应该逗号,什么时候应该句号,当没办法判定哪个才是最后一个的时候,标点符号怎么办?其实真的不能判定吗?肯定是可以的,当某个元素的序号等于这个数组的最后一位,显然那个东西就是最后一个了。在Excel的世界里。尤其是不考虑VBA,只考虑前台的公式,这个逗号的判定在我现在的能力范围之内,的确有点难,所以遇到这种情况,我干脆每个数据给它一行,每行数据的末尾,不加任何标点符号。

昨天我突然意识到,Excel的公式编写是可以插入空格和回车的,当然,空格和回车要加在恰当的地方。比如加在数据连接的地方,不要加在某个函数里。又或者其实加在某个函数里面也是可以的,但是如果你在表达字符串的地方加入了很多空格,最终的结果肯定会哭。也正是因为回车的加入,让我的公式看上去更整洁了,我不用纠结不断地眼睛急转弯。复制粘贴也变得相当的容易。的确复制粘贴很简单,但是粘贴得多了,每一行的数据框架都是一样,只是修改了里面的部分内容就会让我自然而然想到使用循环。如果Excel的公式里有for或者while这种循环该多爽。换句话说,为什么就不能有循环呢?之所以这样,大概是因为Excel,没想过你要么在某个单元格里面展示一堆合并起来的字符串。这种字符串的合并,理论上更应该出现在Word或者普通的txt里面。

我首先写了个索引,然后写了个数据,接着对数据进行数据透视表,最后写了个很长的公式。根据数据透视表和数据透视表以外的一组数据,生成了两段字符串。字符串里面所有数字的格式全部都严格按照我需要的模样输出。这样做的确实现了我想要的功能,但我感觉还是有点麻烦,如果写个VBA,加入数组,这些东西很容易就能表达出来。从前前台看来,也会干净利落很多,但问题是,加入VBA的话。Excel的保存格式就得改变。对小白来说,VBA是个洪水猛兽。他们不知道该不该允许宏这个东西。如果我是他们,我不了解这个东西。这个东西的确有安全隐患,我肯定不会主动打开,即便我知道这个东西可能很强大。

开源的东西用起来得花一些步骤。组装好的东西用起来的确用很爽,但问题是,万一里面有猫腻呢?归根到底,还是自给自足、自娱自乐比较好。

2020-08
19

终于知道了触摸板秘籍

By xrspook @ 10:46:41 归类于: 烂日记

昨天吐槽了笔记本电脑的触摸板,我总觉得之所以这么郁闷是我有些技巧没掌握,结果呢,果然是这样!

Win 10系统下的触摸板已经具备了相当厉害的功能!这是系统与生俱来就有的能力,当然了,要做到这样估计还得配合比较现代的笔记本电脑。没有笔记本电脑,传统的台式机谈不上触摸板, Surface类的东西几乎可以称作是平板加键盘,因为本来就具备了平板的功能,能触控很正常。我智能手机平板之类的触控用多了,但笔记本的触控板却用得很少,一个是直接在图案上操控,一个是在异地操控,感觉很不一样,而且笔记本电脑触控只有那么一点地方,但对应的鼠标相对于整个屏幕而言又很小,所以会有各种纠结。曾经有段时间,鼠标流行鼠标手势,特定的鼠标手势就等于是某些功能的快捷键。那个需要特别设置,我一直都没用过。现在的笔记本电脑触摸板跟从前不一样了,从前的那个东西只是一个鼠标的替代品,早期的IBM触摸板上有一个红色的点,相比其它笔记本的触摸板,那个点非常方便,因为那个东西的使用就像一个摇杆,像某些球形滚动的鼠标,也像遥控杆。当时的笔记本电脑触摸板也有左右键,所以整个板子就只是一个通过手势滑动到某个地方定点的工具。现在的笔记本电脑的触摸板已经很不一样了,通过设置,那个东西能做到跟智能平板类似的事。从模仿鼠标,到模仿平板,甚至是手势控制比智能平板还要好,这就是科技的进步。

触摸板的手势控制不是近期才有的新鲜事。MAC估计早就有了,而PC系列,从Win 10开始已经原生支持,如果是老Windows,估计还得手动安装一些软件然后自己设定。Win 10之后,那些很方便的技术终于被收编。像我这样的人,如果不是昨天特意去寻找,根本不知道原来可以这么强大。他们为什么默认我知道呢?新买个手机,他们会给你展示一个新手教程,教会你智能手机的基本操作,但新买个笔记本电脑,他们不会给你来个教程,告诉你这个电脑的系统有多么牛逼,因为他们默认你知道。这种默认就让像我这样的人一直只是把那个已经变高端的触摸板以低端的方式使用。低端方式使用的触摸板让人随时都有外接鼠标的冲动。

以下面两个是Win 10系统触摸板的使用技巧教程,不知道那东西有多种多点触控秘籍的必须看看:

适用于 Windows 10 的触摸板手势
玩转指尖魔法,荣耀 MagicBook 触摸板手势教程

对我来说,最有用的是双指同向滑动滚动进度条。之前让我最吐槽触摸板的就是无法滚动进度条,这让我的Excel无比烦恼,知道了这个以后,秒杀就能上下左右,而且左右手都可以,不像鼠标那样默认一只手。但习惯了鼠标,现在变成了双指滑动最大的问题是方向搞错。要向下的话,鼠标滚轮应该向下拨,但触摸板是向上滑,这是一个足以把人整死的反操作。昨天是我第一次尝试触摸板手势,中招了好多次。

双指点击为右键这个也很赞,再也不用挪到右下角找右键了。三指向下显示桌面这个跟直接按Win键差不多,但Win键只有一个,三指向下左右手都可以。三指左右滑动切换应用这个跟Alt+Tab差不多,但对快捷键小白来说,三指滑动更友好。

掌握技巧以后,之前我觉得用笔记本电脑工作的时候非鼠标不可终于可以成为历史了。

2020-08
18

黑屏

By xrspook @ 10:43:43 归类于: 烂日记

上周四超过10点才回宿舍,洗完澡以后才发现没有把记录本带上,于是只好回到办公室。既然已经回到办公室,不如把数据做完再走,因为对我来说,用鼠标和用笔记本的触摸板效率不只是差一点点,虽然我觉得现在我的触摸板触控能力已经好了一丁点。我也不知道这个一丁点是练出来的,尤其是单位数据出不来,每天我都得在宿舍用自己的笔记本处理的时候整,还是以前宏基的笔记本触控板的确有点神经,下拉条我从来都就没有用上过,相对于我前两年买的笔记本,反应也挺迟钝,我总是不能定位到我想定位的地方。但即便技术已经好了那么一丁点,但还是很慢。无法定准定位是一个,无法滑动下拉更是一个。之前我为笔记本配了一个旧的戴尔鼠标,但那个东西也是个神经病,也正是因为那个东西说不准什么时候会神经病我才把那换掉。双击单击不知道什么时候会出问题,虽然这个问题应该可以通过设置更换鼠标左右键避免。用了多年的鼠标,我还是觉得双飞燕的针孔鼠标爽快。当我的台式机一律都换成了双飞燕的针孔以后,我根本就无法接受戴尔的歇菜。

回到办公室,开电脑,黑屏了T_T 黑屏这个东西满屏的英文,虽然其实我不会看不懂,但我的第一反应就是慌。理论上这种事只会发生在我突然断电没正常关机的时候,但显然我离开的时候是正常关机的。我很怕这种事会再次发生,但越是怕的事就越会发生。昨天早上又来了!周四晚上弹出来的满屏东西都是什么删除索引增加索引之类,昨天早上的那堆东西里说我有一个坏文件记录,这到底是什么鬼?!如果是机械硬盘的坏道,理论上不是这么称呼的,因为从前的死机蓝屏就经常有那些东西,以前的机械硬盘容易坏。于是昨天一整天我就耗在清理垃圾和磁盘整碎上。一直以来我都觉得磁盘整碎是所有盘都可以的,但偏偏我最需要的系统C盘却不能用Windows自带的磁盘碎片整理,我从来没遇到过这种事。于是只好挖出历史悠久的Defraggler。固态硬盘的时代根本不需要磁盘碎片整理,而且根本不应该去整理,所以这个软件的推荐就停留在了2008年…… 以前我用过这个软件,因为当时硬盘小、速度慢。但现在硬盘大了,内存也多了,我不觉得速度不可接受,所以就不整碎了。不用不知道,一用下一跳,单位台式机4个盘,所有盘里都是满江红!简直是到了触目惊心的地步,硬盘是1TB的,所以整碎我整了一整天…… 我先删掉了我不用的东西,比如Node.js,之所以删掉,因为里面某些插件的readme被认为是碎片,而且无法整理,反正我不用那个东西,直接删掉。整碎完毕,我把之前默认托管在C盘的虚拟内存转移到了F盘,重启的时候我又看到黑屏了,但这次的黑屏完全没有检测出有问题,没有坏文件了,也没有需要删掉或重新生成的索引了。我猜这样估计下次开机的时候不会再黑屏了吧。果然,今天早上没有黑屏!黑屏这种东西,据说查错的时候如果一直都有,开机就会一直自动检查。

办公室电脑的硬盘说不准什么时候就会出状况,尤其是天气潮湿的时候,我总感觉某天得把这个东西换成固态硬盘。

2020-08
14

垃圾评论,滚!

By xrspook @ 10:33:52 归类于: 烂日记

习惯了用python以后要我写php的代码,我各种不习惯。为什么变量前面要加个“$”?为什么要写“{}”这种东西?为什么居然可以乱七八糟不缩进?python估计是不用数组表示东西的,但实际上,在历遍的过程里有数组,而php这东西貌似不像python那样分列表和元组,字符串是肯定有的,字典可能也有,但这个我不确定。在计算某个东西长度的时候还得纠结到底我要分解到什么程度,我不就是要计算一下数组里元素有多少嘛。可能是我使用的方式不对,print_r的确把数组表达出来了,但一坨东西各种嵌套,你给我个缩进好不好,我都分不清谁是谁了。python里计算长度用len(),我已经用得很熟练很爽了,到php里变成了count(),如果数组里还有数组,也要算出长度还得加参数。不得不说,数组这个东西挺让我头痛。记得从前学C语言的时候我就挺烦数组这个东西,我感觉自己一直没学好。当我接触了python,让我明白到其实数组不就是那些东西,为什么就非得用索引号把他们定位表示呢?直接把数据按照数组的排列方式直接表达出来是可以,json就是这么玩的,那是一个混合长度的数组,同样的事情也可以发生在python的列表、字典和元组里。好像在C语言里数组的长度得一开始就设定好,现在看来,我觉得这样不好,因为有些东西的确是很难一开始就想清楚的,搞太小了,放不下,搞太大了浪费空间。学习各种编程语言让我明白到原来某些我觉得参不透的东西其实可能没必要一定用那种思路。

之所以要死磕php,因为我有点讨厌WordPress里的垃圾评论。虽然官方自带的Akismet插件已经免去了我很多烦恼,但还是会有些漏网之鱼,所以我的垃圾评论列表里总有东西,看着心烦。那些垃圾评论虽然不在前台显示,但是在导出数据里会看到,浪费我的空间。对付垃圾评论的方法有很多,插件大法是最适合小白使用的,WordPress自带的规则也能让评论不被摆上台面,但我想做到的是根本不让那些东西写入我的数据库,没有写入就不需要删除,不适合的东西直接滚,减轻数据库的负担。虽然呢,我的小网站向来没什么流量,不会负载超标之类,但每当网站很慢,发布个文章都等半天都开不完的时候我就会暗暗觉得是不是被垃圾评论拖累了。综上所述,所以我选择的垃圾评论对抗大法是“Akismet + 自定义代码”。Akismet这个东西是安装完WordPress以后自带的官方工具,启用、填API就好。自定义代码需要在WordPress模板的functions.php里加入一些东西。网上有很多教程,但哪个才最适合自己得自己试过才知道。评论里可控的参数可以参考comments.php。我的防垃圾评论自定义代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function refused_spam_comments($incoming_comment) { 	
	preg_match_all('/http/', $incoming_comment['comment_content'], $link); // 有两条或以上超链接的,滚!
	if(count($link[0])>1) {
		wp_die("垃圾评论!!!"); 		 
	}
	$ruattern = '/[А-я]+/u'; // 俄语的,滚!暂时我还没见过大批量日语、泰语、阿拉伯语的
	if(preg_match($ruattern, $incoming_comment['comment_content'])){
		wp_die( "垃圾评论!!!" );
	}
	$name = '/Henrylix/i'; // 中文广告
	if(preg_match($name, $incoming_comment['comment_author'])){
		wp_die( "垃圾评论!!!" );
	}
	$mail  = '/(jjgfqijpo)|(.ru)/i'; // 其它广告
	if(preg_match($mail, $incoming_comment['comment_author_email'])){
		wp_die( "垃圾评论!!!" );
	}
	return($incoming_comment);
} 
add_filter('preprocess_comment', 'refused_spam_comments');

WordPress自带的评论规则里有超链接超两条就自动不显示,自动落入待审核的垃圾评论,但这样我还得去清啊,直接不让进更好,貌似我没有在其它防垃圾评论代码里见过这条。很多教程里“wp_die”那里用的是“err”,我不知道其他人怎样,反正“wp_die”我用得挺好,前台后台都正常,但“err”前台后台都不行。有些人这样,有些人那样,是不是跟不同的WordPress版本有关呢?这个自定义代码只是暂时的,我还得根据垃圾评论继续调整,debug的过程永无止境。

我感觉会了代码,人生才算是有了主动权。

2020-07
30

VBA批量打印凭证

By xrspook @ 9:44:34 归类于: 烂日记

昨天我打印了一大堆记账凭证面单。理论上我可以用邮件合并的那套表格去的,但实际上,我依然用的是单独一个Excel文件带控件的打印方式。需要打印的凭证面单有很多。估计超过10张。如果只是一两张,用控件的方式挺好,控件我设置为可以利用上下键,选上一张和下一张。也可以在输入函数的地方直接手动填写数字。只打印某一张或者某几张的情况下,这样做很方便。但当我要打印的东西是一大堆的时候显然这就不靠谱了,万一我手抖一抖,按两下,跳跃了呢?万一我按完,选择以后快速打印按钮按偏了呢?我根本不知道自己打印了多少张,中间有没有漏掉。邮件合并可以有选择范围,我可以选择某个范围内的记录,生成一个新的文件,然后直接打那个。如果我生成一堆工作表,我还得把它们删掉,新建一个文件,我还得删文件。与其这样,不如让机器去执行,我一边数据递增一边答应。人肉会按漏,但对机器来说太简单了。虽然这样不断提交打印,会比全部一起打印慢一点,但实际上,对我来说,一点影响都没有,因为我配套使用的是打印速度非常慢的针式打印机。如果我用的是激光打印机,而且还是非常快的那种,打印内容非常少的话。我这样的操作会影响打印速度,但现在,我做的做法非常简单且完美。之前我想不通,在Excel里要如何实现批量邮件合并的功。昨天,几乎可以说不费吹灰之力我就实现了,而我做的仅仅是写了一个几行字的宏而已,而具体某些步骤要怎么写代码可以先录制一个宏,看看参考一下。我最需要参考的是快速打印要怎么表达。因为VBA批量打印太方便,所以我通常都忘记先选择针式打印机。针式打印机不是我的默认打印机,所以按下批量打印以后,当我的激光打印机开始轰鸣,我才记起自己搞错了,所以我得迅雷不及掩耳地关掉激光打印机的电源,然后重新选择针式打印机。我觉得应该完善一下这个脚本,我应该把打印机也设置好,默认为针式打印机,这样我就不会有用错打印机的烦恼了。

这个脚本非常简单,前面的部分我已经写过了,用的是指定行打印的思路。首先输入两个数字,如果第2个数字留空,就默认等于第1个数字。如果第1个数字也空的话,打印不会执行。当第1个数字和第2个数字都靠谱了,会进入一个循环,步长为1。里面的语句超简单。说白了就是一个让某个单元格里的数字自增,然后快速打印该页面,因为这个页面我已经设置了打印区域,所以一切都很简单。之前我还在想,要做个控件,在Excel里面输入起始和结束页码,但实际上这根本没必要,直接弹窗挺方便。当然,就严谨性来说,我的脚本是有缺陷的,比如万一我输入的东西不是数字还是其他字符呢?万一我输入的数字不是整数,不是Excel表格里行数范围内的东西,而是一个浮点小数呢?我当然可以对输入进行严格的限制,限制它的范围,也限制它的数据类型,但这样显然就有点过了,毕竟这种打印完全是用来方便我自己的,没必要做到这么完美无缺。

现在,妈妈再也不用担心我会漏掉打印某些凭证面单了。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress