2023-11
9

隐藏属性

By xrspook @ 8:30:41 归类于: 烂日记

又是一个下班之后继续干,干到直接忘记写blog。如果不是这么着迷的话,理论上我会先烧水,把麦片泡着,然后打开语记开始口述blog,接着开吃,但如果我过于着迷,泡麦片的时候我会在那里写代码,吃麦片的时候也在那里写代码,吃完麦片以后往杯子里加水,等待水凉的时候继续写代码。可能那杯水我得花好几十分钟才喝完(一边喝一边写代码),也可能等我喝完的时候已经过去了一两个小时,又或者是我根本就不记得喝了。之所以要加一杯水,因为本来吃完麦片就得喝水,如果我不马上洗杯子,东西干在那里很不好洗,如果有水泡着就会容易些。所有习惯,只要遇上着迷于写代码这种事,全部都会变成渣渣,除了显示屏上的东西,身边的一切我都完全没办法放任何的注意力,除非是内急之类。写代码这种事对我来说通常是一发不可收拾的,完全停不下来,所以我没办法预测我得花多少时间,我知道我的目标是什么,但开始的时候通常我不知道具体该怎么做,就更加不好说得耗多久。之所以会这样,因为写代码不是我的强制工作,我不靠那个赚钱,没人要求我必须得那么干,纯粹出于个人喜欢。

光是写出来还不行,当我觉得效率很低的时候我会不断地在那里挣扎,到底有没有其它方法呢?还有没有其它的途径实现这种功能?

遇到问题,光在那里想,是不会有结果的,但只要干,埋头苦干,方法就会自己涌出来。大概是几天前,我不知道在哪里见过意思差不多的话,对我来说,写代码的时候会这样。如果我用的是python,因为我的目标很简单,所以绝大多数情况下都有现成的解决方案,只是那个方案是不是高效,能不能再提高一点而已。但如果我用的VBA+ADO+SQL,情况就很不一样的,因为VBA里的SQL被严重阉割,虽然理论上没什么东西是SQL解决不了,解决不了就输出到VBA的数组继续解决。我第一个接触的代码是CSS,然后是HTML。有段时间我迷恋于花俏的网页特效,有些联合CSS+HTML能实现,但有些不得不用javascript。当年我无数次想开始学习javascript,但一直都没开始。后来,我的大学课程里有C语言,我还考了二级C语言的等级证书。上机是满分通过的,但笔试70不到,所以我那张证书上只是合格而不是优秀。如果能重来,我会做到优秀的。但实际上,优秀不优秀又有什么意义呢,招聘的时候那不过是别人一扫而过的一张纸,甚至不会在别人脑子里留下任何记忆,但为了“优秀”那两个字我就得在上面付出很多,因为考证的考试范围大于大学课程的教学范围。

从我开始接触互联网,我的各种兴趣就没有停止过,写代码这事也一直贯穿其中,CSS、HTML、C语言、php、python、R语言、DAX、M语言、VBA、SQL,其实我也尝试过java,因为那是安卓的基础,或许还有一些我漏了没列出来。或许,码农是我天生的隐藏属性。

2022-09
1

怪异的女人

By xrspook @ 16:14:49 归类于: 烂日记

还记得大学上C语言课程的时候,同学们就议论这个女老师脾气比较怪,因为她年纪那么大还没结婚。现在我大概有点明白这到底什么意思,因为一定程度上我自己也成为了这样的人。我承认我挺怪,因为跟一般的女性比起来我有更多的时间独处,我可以做更多自己的事情,在各个方面发散自由,也正是因为相对于她们来说,我在一些非家庭非谈情说爱非教育子女方面有更多时间,所以一定程度上,我所看到的人生跟他们的不一样。我有更多的时间更多的精力发展我的长处。对一个男性来说,如果他不结婚,他又在某些方面很专业的话,人家会觉得他为事业而献身,他是一个钻石王老五,但如果那发生在一个女人身上,绝大多数时候别人都会觉得这是一个怪胎。首先是这个人的脾气肯定很有问题。这些人通常是女王或者灭绝师太的类型,基本上碰上就很麻烦,因为相比于其它正常的女性,她们的能力更强,脾气更大,说不准什么时候就爆发了。

我们那个C语言的老师前一秒钟可能还好好的,下一秒钟,因为下面的人不听她的课,突然间她就会发火。她又给我们约法三章,我的课你可以不听,但你不能在下面捣乱,比如说聊天或者搞小动作之类的,你睡觉或者整你自己的东西无所谓。相比于下面的人聊天干扰她上课,她更讨厌那些做笔记,下课就去问她一些,实际上她已经强调过,但可能那个人没听清或者根本没听到的人。第一次上课,她就给我们一再强调,我上课你看我听我就行,不要老是做笔记,因为你只顾做笔记就会错过我说的那些。我们班刚好有一个同学,是一个笔记狂人,从上课到下课她都一直在那里写。除了是记笔记发狂以外,她也是一个问问题的狂人,所以下课基本上她都会冲上教讲坛问老师这样那样的问题。可能因为她问的那些问题其实老师说过,但她可能错过了,所以老师很不喜欢回答她的问题。不屑回答又或者根本不想见到这个人的样子。最激烈的一回发生在不知道那个同学问了什么问题,反正老师直接不回答,把那同学的书丢出了教室,我们在场的所有人都傻了,鸦雀无声。然后还有一次发生在期末考试前,已经没有课了,但老师说你们可以在什么时间去哪个办公室找她答疑。也是那个同学,也是在问问题,但老师就是直接当她透明,完全不理睬,看到外面还有人想过来问问题,直接招呼别人过去,把那个同学撂在那里。这个老师就是这么有性格。可能在上这门课之前,我们的某些同学已经听说了这个老师的怪异作风,所以才有了一开始打听到她是个大龄单身,所以少惹为妙。对其他同学来说,那个老师倒没什么问题,还是挺好说话的,虽然她教的是C语言,但我个人觉得在编程方面她的逻辑转数还是相对慢一些,之所以这么说,是因为她给我们说冒泡法的时候一路都小心翼翼。因为只要她一分神,她就会知道自己会出错。因为她讲课的时候也小心翼翼,所以冒泡法对我来说是一个让我心有余悸的知识点,但后来当我又经历了很多以后,反过头来才觉得其实冒泡法还好。

那个时候我不知道为什么会有那么一种感觉,要是将来我变成像她那样的人就郁闷了。现在看来,我没有变成像她那样,但是却是另外一个款式的奇葩。

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-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-04
16

在死去活来中成长

By xrspook @ 10:03:58 归类于: 烂日记

昨天晚上,在做那些文字游戏的时候,我做到了好像怎么费劲就轻而易举地把题目做出来了,只需要几分钟到十几分钟。从写脚本到测试成功,整个过程没有状况,甚至写完脚本后,所有东西下面红色波浪线都没有。通常,我都会习惯忘记在句子的结束加上冒号。Python要求必须严格缩进,多了少了都不行,而且使用缩进必须用一样的方式,通常必须要求用4个空格。习惯了用VSCode以后,我会设置缩进为4个空格,当我在上一行回车之后,如果上面是冒号,下一行就会自动缩进4个空格。但如果某段代码不是我写的,而是从某个地方复制过来的,就可能会出现状况。所以为了避免这种无聊的出错,我把所有占位符都显示出来。比如空格,也比如tab。大概对其他人来说,写代码就应该是行云流水的。知道自己要实现的功能是什么,知道自己应该用什么方法,然后按照思路按部就班。调试这种东西没有个尽头,没有说用了某些方法测试就能一定保证调试完以后程序没有任何的bug。只能做到尽可能少bug,不可能做到完全没有bug。不知道从什么时候开始,我觉得不把话说死非常重要。

昨天我终于体验到云流水般写代码,是因为在行云流水之前我已经纠结过好几个小时。在行云流水之后,我也遇到了命令行的光标卡在那里,不显示程序有错误,但是程序也不进行下去。如果我进入了死循环,程序出不来,Python会提示我上面已经进行了超过994行,别浪浪费大家精力了。之前我已经见识过了。而昨晚我遇到的是光标停在那里,没有任何提示。脚本那里也没有任何红色波浪线,说明语法是对的,起码静态语法没问题。当我再次看到脚本的时候,发现原来是我在用while进行循环迭代的时候,没有设置改变条件的东西,于是while的循环就停在那里了。在我构想那个循环的时候,其实我是设定好增量条件的。我的脑子已经准备好了,但我的手指并没有把增量条件敲上去,所以就出现了之前死在了终端的状况。我不知道光标死在了终端我还能做些什么,反正我的处理方式是把终端关了。光标停在那里,输入什么都没有反应,又或许如果我在单独的CMD命令行里搞那个的话,我可以用某些什么方式从那里跳出来。只是我现在不知道该做些什么。因为我是在VScode的测试,所以我简单地把那个终端的窗口关掉,重开一个就好。

还记得,在大学里学习C语言的时候,其实我不怎么喜欢用while这个东西循环,我更喜欢用for。拿Python跟C语言比,我觉得后者需要我们在写代码的时候更加仔细严谨。比如花括号这种东西绝对不能省。也比如某个对象在使用之前必须先声明,不只要说明它存在,而且要确定好那是一个什么类型的东西。在循环控制方面,C语言一开始就必须得想好所有。相对而言,Python很自由。昨天我突然发现原来in这个东西可以让if这种语句也具备循环的功能。在实现某个功能的时候,我用了两个for嵌套,而参考答案只用了一个for和一个if,出来的结果完全是一样的。我在两个for里还得加个if做判断,相对参考答案而言,显然就有点臃肿了。

我明明知道做习题会让我死去活来,但是一定程度上,我却在享受那种征服未知的刺激。

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