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表格里行数范围内的东西,而是一个浮点小数呢?我当然可以对输入进行严格的限制,限制它的范围,也限制它的数据类型,但这样显然就有点过了,毕竟这种打印完全是用来方便我自己的,没必要做到这么完美无缺。

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

2020-07
24

分类管理

By xrspook @ 9:22:41 归类于: 烂日记

越是整理数据,越是觉得挺奇葩的。还记得一开始的时候,BlogBus只有分类,没有标签,后来多了标签,但分类没了,强迫把我们的分类全部变成标签。后来分类回来了,标签依然有,但分类只能选一个,标签可以好多个。这样的设计纠结了好长时间才终于确定了下来。后来当我用上WordPress以后,发现原来人家分类和标签都可以同时多个,但因为BlogBus的使用习惯,所以分类通常我只会选一个,而标签会搞一大堆。这是因为blog上的使用习惯,所以我在文件归档的时候也会用分类和标签,我的默认设置继续是分类只有一个,标签有一堆,用python的思路去解释就是某个文件跟某个分类是一一对应的,它们可以形成字典的关系。某个文件和某串标签是一对多的,如果要用字典表话。那堆标签得用列表去表达,于是在文件一开始的时候,就得引入特殊的字典模块。我也不知道为什么必须得有个分类。如果没有分类,全部都只有标签呢?其实也说得过去。文件完全按照时间排序。如果时间一样的话,就按照不同的文件号排序,因为文件号这种东西也是有一定的命名规律的。至于用什么关键词找到这个文件,则可以通过标签,所以其实我觉得标签和关键词是非常类似的东西。

当我在进行动态blog数据转为静态网站以后,我有点明白到。分类就像是定义一个人的一级目录。有些人的blog分类的命名非常有意思。对我来说,那肯定是花了很多心思才终于想出来的,对别人来说或许不这样。要快速定义一个人的话,用分类基本上就可以了。标签通常体现的是某个人的各种特征。标签使用的多少跟这个人的性格和特点很有关系。标签云是一种非常有用的东西,通过不同的颜色以及不同字体的大小就能体现出标签出现的频率,从而反映出这个人的特点。分类这种东西,像是自我介绍,是努力想出来,把自己介绍给别人的,而标签更像是无意之中积累回来的东西。我不知道别人的blog情况会怎样,基本上我的blog的分类是废掉的,因为绝大多数文章都被分类到烂日记,因为我的习惯是一天至少要有一篇日记,而烂日记每天也顶多只有一篇,如果大于这个数的话,我就会用其他分类。从前当我还非常勤快的时候,还有其他分类,但现在,每天一篇日记算是保底,也是封顶。只有一些非常特殊的时候,我才会有两篇或者以上的日志。从前的我,那些多于一篇的日志类型五花八门,而现在也就只有当我心血来潮的时候才会来一些,而通常,那都是专注于某个领域的。对我来说,分类能代表些什么呢?那只能代表过去我曾经做过的某些事。真能体现我个人特点的,只有标签云。到底我用过多少个标签呢?我实在记不清楚了,因为WordPress是个神经病的存在,有些标签我输入了,但是有错别字,我删掉了,但那居然也会保存下来。即便我没有按保存按钮,而有些时候,我真的敲错别字了,但是自己毫不知情。那个错误的标签也保留下来。一篇文章我会输入多个标签。基本上,想到什么相关就会往里面写,所以标签可能一大串,也正是因为这样,各种标签都会出现,所以只出现一次的标签在我的blog里,概率很高。于是就造成了一个比较搞笑的局面,我的分类是严重偏科的,而我的标签是海量的。如果某一天我要把这些东西选进我比较简洁的目录,我该怎么选择呢?标签肯定是不行的,但分类也很奇怪。所以大概那个时候,我就只能用日期做归档了,又或者选择用得最多的10个标签。

静态blog很伟大,但我觉得,我的东西、我过去16年的生活没那么容易在一个静态blog里全部展现出来。因为连我自己都说不清,那到底有多少东西。

2020-07
22

jinja模板,你好

By xrspook @ 19:20:33 归类于: 烂日记

我终于做到了用模板的方式以及我自己的数据生成静态网页。暂时我还不知道,那些放进去就能用的格式类东西应该怎么在生成网站的时候顺便一并放进去。肯定是有方法的。虽然现在我手动挪一挪也无所谓。我觉得那大概是一个获取文件,然后解压到目标位置的操作。

jinja的模板套用比我想象中简单。在进行我自己的操作之前,我复制了网上的一个教程的代码,发现真的很容易。模板本身也可以通过浏览器查看效果,这个非常棒。从前BSP不就是干这种事吗?无论是可视化编辑的,还是纯代码操作的,其实都是在设计模板。现在我也终于明白,为什么相比于其它核心功能,在模板方面,我为什么总感觉自己有那么多的经验,因为实际上,我的确在那个方面花了很多时间。现在我已经不记得BlogBus的模板是怎样的了,唯一的印象是他们用的是代码编辑。他们会给你一些核心代码的封装,你可以把那些东西放在指定的某些模板里。封装的东西以外的部分,你可以通过css,或者js去控制,但是封装在里面的,基本上就是一个无药可救的状态了。所以有些格式你觉得你应该可以控制得了,实际上你却做不到,因为封装在里面,已经把格式给写死了。不知道如果我在css那里强行加个important,能不能扭转局面,但显然,当时我根本不知道有important这种东西。css的important的确威力无穷,但是important如果经常用,就会破坏规则,也不好维护。不得已我才会用,即便用了,一个css文件里面,通常不会超过三处。

以前的模板设计,我只是能处理一些格式上的东西。现在,我自己写脚本生成静态网站。无论前台后台,我都玩了,我得顾及前台的模板形式。也要考虑后台的数据整合以及数据的架构类型。在用jinja模板之前,我用的是人肉低端的字符串合并。虽然实际上,我做的低端操作也是实现模板的功能,但就维护来说,这实在太困难了!如果一个网页里面有很多数据是动态的,我就不得不把网页切分为很多份。切着切着,我都不知道自己切到哪里了。就数据生成效率来说。我的低端做法效率会更高,至于为什么,我不知道。9498个页面,我的低端做法转化需要22秒,jinja模板只需要32秒。这个不是偶然事件,在进行9498个页面转化之前,我先进行了一个只有几个页面的测试。结果跟大数据的很类似,低端做法,要比高端做法快1/3。这其中的原因是什么呢?据说jinja已经是个生成速度自称为“快速”的脚本,如果是另外一些,可能更慢。9000多个页面才多10秒钟,任何人都忍受得了。就维护的便捷性来说,低端拼接的维护成本随便超过10秒,所以用jinja模板绝对是值得的。这让我想起了我最在行的邮件合并,用word和Excel联合起来批量生产东西。我不知道其他人玩这个能溜到什么程度,反正这个东西一直都是让我引以为傲的,当然了,这种技能,也是后天逼出来的,工作使然也。

一些我觉得可能挺不容易的东西,居然很轻松就被我攻克了,感觉非常意外。接下来,生成搜索引擎所需的索引,估计不是件容易的事。生成索引,最重要的是思路,而过程不过是一些机械操作而已,我必须掌握好那个思路!

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