2020-11
24

2020只剩下一个月了

By xrspook @ 9:35:11 归类于: 烂日记

昨天当我重新配置VSCode的时候,我发现python的东西我好像都已经忘干净了。之前几个月,我花了那么多时间去研究折腾,现在,除了最核心的东西,格式上的问题我好像全部都忘干净了,大概研究一下就可以重新上手,但现在如果叫我写脚本,我会彻底一片空白。同样一片空白的还有我的git的文件夹。换了个硬盘,要重新配对上显然不容易了。当时放到网络上的东西只是一部分,最根本的那些我还没往上面放。所以这就意味着其实我的电脑还是要装一个git的,然后把那些东西整理好以后往上放。什么时候才做呢?我自己也没想好。之所以没想好,大概是因为我还有一个羁绊。

今年我们已经写了两篇统计分析,但无论写多少,年底还是得有一篇对应2020整年的分析。那个东西该怎么写?如果按照从前的套路,直接在从前的数据上面更新数据,肯定没什么难度,但是我要做的显然不仅仅是那些,因为每一年的状况都会略有不同,最重要的我觉得是把握那些不同点,但我也明白不同点只是一部分而已,整体的思路还是得延续从前的风格,但从前的风格是不是一定就靠谱呢?具体的细节我还没想好要怎么整,整体的规划,暂时也没有一个很确切的想法。现在我我的状态是想做又不想做,摇摆中。情况就像我想逃避,但我又非常明白这根本逃避不了。还剩下一个月的时间。这个东西必须得整出来,我知道其实一个月的时间很充裕了。要解决一个细节上的问题,几天就足够。但毕竟这不是我一个人做的事,所以我不能把那算得那么死。应该用什么样的风格?应该用什么样的图表去表达呢?今年前两个分析,跟之前的风格不一样,因为都是专题类的,要凸显出某些东西,而这一次,全年的分析显然侧重点不在那里。这是我重新接手统计的第四年。印象之中,前几年我好像从来没有在这个问题上费过多少心。现在,数据的整理已经常规化,所以我会在细节问题上纠结。从前如果要做一个年底的分析,我大概是到年末的时候才开始整理数据,但现在每个月末我都会整理。所以总的来说,我的查询表相对而言已经比较固定完善,但这也说不准什么时候我又蹦出来有一些新想法,是之前的那些数据收集方式无法覆盖到的。在2020年里搞定这些事,接下来的那两个月不过是等过年而已,没有烦恼。秋普已经过去,剩下最后一个比较大型的就只有绩效考核。如果你问我,春秋普查慌一点还是绩效考核慌一点,其实我都无所谓。如果我说两个我都不慌的话不知道有没有人会相信,因为实际上,那些检查要求做的事,在日常工作中我已经都做了。

我的方糖12月28就可以完成最后一次的打卡,如果能坚持到那一天的话,方糖2就算是被我白嫖到了。理论上,在那一天之前,我就应该完成今年的统计分析的绝大部分,剩下的只有更新最后几天的数据而已。

纠结要做什么的时候是最浪费时间的。

2020-10
10

当年,为什么

By xrspook @ 10:20:34 归类于: 烂日记

不知道从哪里看来这么一个评价,中国的程序员在实用技术上的开发是一流的,但美国的程序员在基础理论上的研究生一流的。可能原话不是这么表述,但大概是这么个意思吧。我也是一个专注于使用技术上的人。我没有一个确切精通的东西,但要做到精通某个东西其实已经是一个很高的境界了,显然起码暂时来说我不是那种人。我会偏向于用某些思路去解决问题,但当某些思路是在不能解决某些问题的时候我的脑洞会再次打开,慢慢地转移到别的地方去,之所以有这种转变,是因为我发现别的东西在解决某个问题的时候更加靠谱好使。所以,总的来说我并不局限于只用某个工具解决问题。

大学的时候我不知道为什么我们要学C语言而不学习其它编程语言。大概理工科的学生都要学习编程语言这种东西吧,不知道学设计的要不要呢?反正农学和经管的好像不用。至今我都不知道为什么非得在我们的大学课程里安排这么一个必修课。学计算机的学生也必须学C语言吗?还是说他们学的是其它?又或者他么是在学了C语言以后再学其它?为什么我搞不懂必须学C语言最根本的在于C语言必须在DOS下执行,还得先编译再运行。除了在软件里写码以外,我最经常用的写码工具是Windows自带最传统的记事本,要不干脆不在电脑上写,直接在草稿纸上写。如果当时已经流行像VSCode那样的编辑器,大概我就不用走那么多弯路了。编辑器能够提醒你语法有否出错,即便语法不错,程序能不能运行最根本的是整体的思路。跟python比起来,C语言的语法更为严谨,之前没有声明过的东西不能用,花括号这种东西必不可少。后来我明白到大概当年要求我们必须学习C语言不是要我们真的懂得用那个东西搞出些什么,而是让我们对编程思维这种东西有所了解。因为是在DOS这种环境下运行,学习的时候就自然不会带入太多额外的脑洞,让东西写着写着就跑偏到别的事情上。如果当年学习的是python,大概我的很多同学就不会觉得编程语言除了用来应付考试就一无是处了。编程能快准狠地解决我们平时遇到的很多问题,但体会到这个又是过了好多年后的事了。话说回来,如果一开始就让我们知道那么多,是不是好事呢?

有时我挺庆幸我读书的时候网络远没有现在发达,起码智能手机还没有。没有随手拿来的智能手机就不会有假期拍照和录小视频的作业,同时也没有每天限定多长时间得在某个app上完成某些作业的任务。对成年人来说,游戏是消遣,对孩子来说,手机app完成作业是学校作业的无限延伸。从前,离开学校就算解放了,但现在,因为有app的约束,哪里都是天眼的管辖范围。app上的数据家长在看,老师在看,虽然其实完全遵照那个去做实际上也不会太难,但哪个孩子没有叛逆心。手边没有智能设备,的确让我的从前少了很多照片和视频记录,但也正是因为从前的照片都在胶卷上,需要晒到相纸上,重新掏出实物让人更容易触摸到从前,岁月的颜色和味道都留在了那里。

我的人生让我有了我去选择的权利,而不只是成为别人想我成为的那个。

2020-09
19

我喜欢Excel

By xrspook @ 20:53:41 归类于: 烂日记

Excel的一般公式,我比较熟练,一些高级公式的叠加,我需要找教程套用,但起码我知道那是可以做到的。一般的数据透视表,是我一直以来用得相对来说最顺溜的东西,至于高级的数据透视表,也就是超级数据透视表我几乎不了解它的高级用法。在数据的筛选查询方面,之前我用的是公式,而近期,我知道了有Power Query这种神器。在这之前,我已经知道可以SQL语言查询。去年我开始系统学习了Excel VBA。这让我大大提升了某些工作的效率。当然这是非常有针对性的。对我来说,要开发一个VBA脚本需要好些时间,并不是一写就能用的那种类型,期间要经过不少修改。所以其实总的来说,对Excel的了解我还是比较全面的。

也正是因为有这样的经历,所以当我遇到某些综合性的问题的时候,当别人把目光主要集中在某个他们很熟悉的版块的时候,我会凭借我的直觉找问题,而不局限于他们觉得出问题的那个地方。比如在把SQL查询跟VBA结合的时候,别人会把精力放在SQL查询有没有写错上面。SQL有没有写错,其实我根本没看,对我来说那些东西太长了,看不懂,而且那个人写的VBA脚本缩进很有问题,看得我很郁闷,所以我就更加没有心情在那里琢磨。那既然能计算出一个正确答案,说明那个查询语句应该没什么问题。也正是因为写脚本的人的那堆东西格式比较混乱,所以我有理由怀疑那是拼凑起来的脚本,因为居然在脚本的开头连变量的定义都没有。为什么VBA里没有进行规范的变量定义,后面也居然可以照样使用呢?这让我有点惊讶,毕竟这是个VBA,不是python。C语言里,如果不先进性变量定义,后面根本用不了。在我记忆之中,VBA的变量在使用之前是需要先定义的。最终我发现是那个人的脚本之所以出错,是因为某些语句的套用搞错了,为什么他会把那个东西放在里?我觉得大概是因为他没有明白他一开始做的那个with是什么意思。但如果你问我为什么他把那堆东西套在里面会出错,而且是某些地方出错,不是全部出错,我回答不出来。理论上这种错误能在恰当的调试中体现出来,但实际上,VBA的调试句子我还用得不算很熟练。或者你会说,这是因为我的VBA学习还不够系统化,但我觉得我已经用了学习VBA最靠谱的那本书了。可以肯定的是,一些很基础的调试方式我还没掌握,如果我学会了那些东西,我可以大大提升我的调试效率,把错误定位得更精准。VBA脚本这种东西,我觉得最根本的是必须得理解。如果纯粹是各种套用,基础功能的确可以快速实现,但是当遇到的问题比较综合的时候,就会出现一些他们完全料想不到的状况。那种状况有可能与脚本本身的内容无关,与脚本的结构有关。

相对来说,Excel里我用得最弱的是高级公式的套用。如何用一个非常复杂的公式解决一些高端的问题是我一直以来都不大上心,或者说记得不够好的部分。非常复杂的公式,尤其是数组公式,虽然能解决一些神一般的问题,但问题是,其实那些公式需要耗费大量资源,所以在处理大数据的时候,非常有可能出状况。我是一个实用主义者,能做到某个功能,但是做起来的效率不高不好,我为什么要选择那种只是看上去很炫酷的方式呢?情况就像用VBA解决同一问题的时候,如果只是在工作表层面处理和先用内存数组处理再在工作表层面表达,效率千差万别。

Excel对我来说,除了要最终结果,过程也得追求高效和方便。

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-08
13

喜欢VS Code

By xrspook @ 11:30:56 归类于: 烂日记

我感觉自己越发喜欢VS Code了,这个东西的确就是我想要的写码工具,如果早点认识它,从前我就不需要走那么多的网路了。用VS Code写过代码以后,我对它是一发不可收拾的喜欢,但我始终不习惯在暗黑界面码中文,毕竟写代码和码中文不一样,写代码的时候思路是自己的,但积木的类型是固定的,这就意味着写码的时候如果有Emmet会相当便捷快速不出错,但如果在写blog的时候,尤其不是写代码技术类的时候,Emmet会变得毫无用处。同样我不需要额外纠结的还有中文语法。写blog是很自由的事,试想一下满屏的各种颜色波浪线,侧面和下面还有各种数字圈圈那将多么的恼人,当然了,貌似VS Code还没有厉害到可以有中文语法自动检测这种功能,我估计英文可能已经有了,Office几百万年前就已经有的功能VS Code可能天生就内置了,即便没有,让你绝对想不到的插件也肯定能实现。Offcie有中文语法检查的功能,但那个东西,笑而不语就好,别当真。

写码为啥要VS Code呢?不仅仅是Emmet功能,写过的函数,设定过的变量往后再用的时候,敲几个字就能有提示,就更不用说,使用默认的系统函数时能马上显示出详细的函数说明。自己写的变量一个颜色,系统函数一个颜色,保存以后还能自动语法检查,妈妈再也不怕我会犯格式上的错误。但话说回来,格式不错,不代表代码就一定可以运行出你想要的效果。毕竟代码的核心仍然应该是你的思路。

我不知道为什么大家都说暗黑模式写码护眼,护不护眼我不知道,但我知道白色界面看五颜六色的高亮会刺眼,相对来说,背景主色调是深色就没有这种不和谐。是不是因为这样,所以一开始的电脑都是黑屏白字而不是反过来呢?因为他们完全可以把那个东西做成计算器那样白屏黑字。现在我的习惯挺奇怪,写码的时候我用黑屏,写blog或者写其它文章的时候用白屏。我感觉自己用白屏的时候字体大小得设定到起码是黑屏的1.5倍。

去年我第一次接触R语言,觉得那个东西实在太伟大了!今年年初我的计划是学习R语言,但结果Python捷足先登了。VS Code搭配Python那是爽得一逼的节奏,因为Python是很大路的程序语言,所以很多东西已经非常完备了,相对来说R语言小众一点。无论是官方自带适配的还是第三方插件都比较弱。我用过R语言写码,那个东西简直是太难写了!一大串东西写好,要修改其中的一些,还不能鼠标快速插入,只能用键盘光标移过去,实在太逆天!当时我用的不过是系统函数,很多参数的位置和写法都是固定的,无数次我运行失败都是因为我手贱敲错了。试想如果这放在VS Code,有自动的语法提醒纠正,这种烦恼根本不存在。同样比较烦人的写码还有Excel VBA。运行的时候他们会弹出一个代码告诉你出错了,代码到底什么意思呢?到底是哪里卡死了呢?他们明明都得出代码了,却不直接告诉你到底是什么意思,很多时候,运行卡住是因为我手贱把一些系统参数的名字写错了…… 又是参数名字写错!如果在VS Code,这种事情根本不会发生啊!

写代码的方法千万条,但能边写边提醒你不犯低级错误的通常都不是某个程序语言自带的编辑器……

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