2020-04
10

强大到让我瑟瑟发抖的递归

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

大学学习C语言的时候,基本上我不会写单独的函数,所有要解决的事都在主函数里搞定了。当时我学过判断和循环,但是,我却从来没学过递归。在解决一些简单事情的时候,循环跟递归,没什么差别。从理解程度来说,我觉得循环更简洁一些,但是,当某个东西像套娃那样一层叠一层,每层里面依然用同样的规则继续套叠,不知道要叠多少层的时候。递归就会展现它无穷的魔力。循环难以实现这个,又或者循环并非实现不了,但是递归在完全不需要体现循环的框架下,简洁的语言就已经在做着循环的事情。

昨天,我第一次在Python里见到这个恐怖的递归。外国人的书,我觉得都有一个特点。正文的时候举的例子都很简单,但是一到习题,就会把你彻底搞死。习题里面会偷偷带入一些超纲的东西。大概写书的人理所当然默认你应该知晓。这种事情我已经在学习Java的时候领略过。当时那本书之所以没法看下去,就是因为我没办法想象出作者的脑洞到底是什么。他们的习题几乎可以说大多是一些填空题,但要实现一个功能,其实未必一定就得用某种方法。你给我一个条件,给我一些目标值,我能做出来也就OK了,为啥必须走你的路呢,这非常难。之前我不觉得自己跟外国人的脑洞到底差多远,但是当我对比过自己和他们写的程序以后,我发现真的差挺远的。虽然我们都能实现某个功能,就效率而言,感觉上没差多少,因为我只是在做一些非常初级的东西。应试教育的时候,有标准答案,当然好判定成绩,但实际上,编程这种东西真心应该天马行空。给我一个效率的限制,比如说完成某件事,必须在多长时间之内解决,代码长度不能多于多少,至于我用什么办法,这是我的事。

说回递归函数这件事,在处理几个简单数字的时候,可能你感觉不到它的强大,但是,当我见识过用那个东西画出来的层级图形以后,我简直就只有站在旁边瑟瑟发抖的份儿。真的不知道是哪个神经质想出来这么强大的东西。但实际上,深究下去,那也不是很强大,那不过是不断地重复一些已经设计好的事情而已。如果要人去做那些重复,一开始还好,但是随着事情的深入,会慢慢乱套,但是计算机不会,他们会一根筋地执行我们的指令。最终出来的结果是令人惊叹的优雅,还是乱七八糟一坨屎:就得看设定规律的人的功力了。

递归现在对我来说是一个非常恐怖的东西。因为我不了解它,所以我害怕它,就像当年认识循环一样。但是,用好递归以后,我的武器库里就会增加一个杀伤性非常大的家伙。说到递归,让我联想起新冠病毒。这个东西的递归到底什么时候才是个头?我觉得这肯定不是一个死循环,自然界非常擅长递归,处处都是数学和逻辑你知道吗?!但是,到底要递归多少次,全人类才最终能看到隧道尽头的曙光呢?到底这个新冠病毒函数的递归里埋伏了多少个随机数呢?学习递归让我明白到,层级少好对付,层级一旦扩增,那就是次数级的增长,而且,说不准到达一定层级的以后就会触发某些大招炸弹,想想都心寒。

编程是一个让我重新理解自然规律的过程。

2020-04
9

还有更低

By xrspook @ 9:15:57 归类于: 烂日记

我一直都觉得自己是个选择困难症患者。很多时候,我都不知道自己喜不喜欢,有时,第一感觉都喜欢,但是你要我挑哪个最喜欢,我说不上。但是如果你必须要我挑选其中一个,我又发现原来很多我都不喜欢。这种感觉我不知道别人有没有,这种事经常发生在我身上。所以很多时候,我不是用喜不喜欢这个标准去挑选东西,而是用划不划算。价格是不是很低?质量是不是还可以?在买大件商品的时候,我非常看重性价比,但是买一些无关紧要的小东西的时候,我非常在乎价格。当然了,买大件东西的时候。我也很在乎口碑,当我知道一个品牌毋庸置疑是最好的时候,我不会考虑它的性价比是不是跟其它有差别。买小件东西的时候,我会非常在意能不能选到一个超低的价格。

比如说近段时间我在淘宝特价版上买了两条数据线,是分开买的,1.2米的type-c数据线,据说,能过3A的电流。我没试过,但是其中一条线,我用来在小米4c上充过电,的确是快充的,充电过程正常。现没有什么意外发生,传输文件也没有问题。那是两条软硅胶线。这两条线买的时候,我都各自用了一个红包,而这条线本身就很便宜,所以每条线才一块多。要知道小米1.2米扁的type-c线要16块多。好像这个还是特价才有的价格。如果是绿联的type-c线,一米的就要14块钱,而且这还是最便宜的那种。我不知道为什么我会那么大胆买一条便宜得让人觉得匪夷所思的USB线。我不知道线材如何,如果我够狠的话我应该剪开其中一条,看看里面什么状况。那是一条软硅胶线,跟其他线比起来柔软很多。不知道买第几个耳塞的时候,我遇到过这样的充电线。一开始我还怀疑过它们的质量,但是用过一段时间以后我觉得还行。我实在搞不懂,为什么一条数据线居然可以卖这么便宜,他们是靠什么赚钱的?而且,一块多一点的价格还是包邮的,虽然那个邮件不过是从深圳寄过来而已。我自己也寄过邮件,现在的邮费要比从前贵好多。所以这一块多还包邮的数据线他们是什么靠这个经营活下去的呢?我不只是买过一块多的数据线,我还买过5毛钱的硅胶杯垫,同样也是包邮的,而且那个还远一点,好像是从义乌寄过来的。不知道从什么时候开始,我就迷上了淘宝特价版这个东西,在淘宝上买的东西都可以在那里买。区别在于那里每天你都可以收到一个红包,以前的大一点,接近一块钱一个,大红包那天,那个红包甚至会接近两块钱。现在这些红包都打折了,大红包就只有一块钱多一点。领略过非特价活动的淘宝的人都会明白,即便很多东西上面能用淘金币,但实际上那些红包要凑一块多几乎是不可能的。淘宝特价版可以用微信上的优惠券。唯一的缺陷是链接贴回微信无法跟踪返现。特价版开到的红包已经比返现的那个数大很多,又何必那么折腾呢?

从前我觉得十几块钱买到包邮的东西很划算,后来我买过几块钱的,现在我甚至买过几毛钱的。而且这些东西还不是兑换,是真正的货品,是可以重复出现的。这个世界发生的事,我越来越不知道该如何解释了。

2020-04
8

为什么会被小海龟折磨

By xrspook @ 8:44:09 归类于: 烂日记

先画一个正方形,然后画一个正多边形,接着画一个圆形,最后画一个圆弧。从思路上说,再简单不过了,但实际上实施起来的时候,我还是花费了一点心思,但这些东西跟之后的用圆弧画出三个花朵比起来,我算是轻而易举就完成了的任务。后来的花朵之所以耗费了好几个小时才终于搞定,倒不是因为问题本身有多难,而是因为其实我没想通那些数学上的问题。我要画一朵花,花是由花瓣组成的。我画的那朵花是规则结构。那么画完一个花瓣到下一个花瓣的时候,角度我应该如何确定呢?这个问题很简单,但实际上我却在这里兜了无数个圈。我在那里瞎猜,所以很浪费时间。有无数次,我想直接去看答案了,但是我还是控制住了自己。当我终于画出一朵花,并在里面测试无论花瓣是胖是瘦,是多是少,我都能画出来以后,接下来我考虑的是如何一次性在一个面板上画出三朵花。画出一朵跟一次性画出三朵,其实已经非常接近了,但要怎么实现,还是费了一点心,因为某些函数的应用书上根本没说。我去网上稍微搜了一下,发现直接搬过来,而且是在没有看到例子的时候就搬过来行不通。最终我用了COPY大法,一次性画出了三朵花,虽然花的大小跟要求的有点差别。当我看过答案以后,我觉得这种差别是完全可以理解的。胖瘦跟大小是由他们设定的参数决定的,那些参数我们不可能知道。我只能模拟出个大概比例,要我完全模拟出一模一样是不可能的。

小海龟这个东西是一个画图的玩意,但是那又不像艺术家手里的画笔那样随心所欲。那是编程出来的,编程出来的东西还是有大神可以画出个小猪佩奇,但这些做法正如某些大神能用Excel的单元格画出他们想画的任意东西一样。

玩过成年人常规的编程以后再去搞这个小海龟,我觉得最难的地方在于数据的运用。你该怎么处理那些数据?难就难在那些公式设计上面。我不知道为什么Think Python 2这一章要这么整人,但也正是因为他们把我整得很惨,所以我在函数调用上面的确有了一些思路,而那种感觉是从前老师又或者我自学的课程里从来没接触过的。这些才是最核心的东西!为了让我懂得这个,他们祭出了从来都让我很崩溃的小海龟。

现在回想起来,为什么小学的时候小海龟会那么容易让我崩溃,估计情况跟现在差不多。在解决问题的时候我没有把那个箭头当作是一条数学题,一定程度上我把它当作是一个游戏了,所以当我不可以一口说出答案的时候,我首先开始做的是瞎掰,折腾好长时间以后我才终于静下心来,用脑子去考虑,这到底是怎么回事。所以可能某些东西的实现并不难,但是因为我耗在瞎掰上面的时间太多了,简直把我搞得慌张了,所以我会对那个东西瑟瑟发抖。把大问题解剖下来变成小问题,再逐个击破,我应该能很快的发现我的问题所在。

战胜人生中曾经不敢去面对的,非常有意思。

2020-04
7

挑选Markdown阅读器

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

昨天晚上我又花了好些时间为我的小米平板1选一个Markdown阅读器。如果这是我的手机的话,非常容易就解决了,因为坚果云Markdown完美解决了所有问题,但不知道为什么,虽然还在他们的安卓兼容范围之内,但是坚果云Markdown在小米平板1上打开md文件的时候会一片空白。那到底是为什么,我没搞懂,但是可以肯定的是,无论是在MIUI 9还是在MIUI 6都不行。我之前之所以选择坚果云Markdown,是因为那个东西是我试用过所有app安卓下,不需要任何设置,直接就能读取我手机或者我内存卡上面的md。这样的设置,看书的时候就很方便。其它阅读器,你可以在文件夹里通过某程序打开,但显然就不那么方便了。安卓系统里传统推荐的软件MarkdownX也不错,非常有可能不少Markdown编辑器都是抄他的。

有些Markdown编辑器是所见即所得的格式,他们觉得是很酷,但实际上会让人很眼花,因为Markdown的符号和Markdown转化后的样式都体现出来了,尤其像我这种不是为了写,纯粹为了看的人。坚果云Markdown之所以好,是因为它的编写和预览在同一个区域。一个转换按钮就可以从编写到达预览,文件打开后默认界面是预览。这样就完美解决了手机小屏这个问题了。不少安卓Markdown编辑器沿用的是电脑的那种,半屏编写半屏预览,所以明明我的小米平板要比我的手机大很多,但是被分了一半以后,阅读区域还是很少,这简直就是搞死人的节奏!我试了好多个Markdown编辑器,在预览这方面,很多都做得很一般。有些的确是全屏显示了,那问题是反应速度很慢,比如iA Writer。安装Firefox后,可以通过安装插件来实现阅读md文件。在手机上我觉得这是没有问题的,但是,当我在平板上这么做,生成的那个文件,字体就变小了。浏览器本身是可以通过手势扩大字体,但是那样的话阅读的时候就要不断左右移动页面,太烦了。我没有在Firefox安卓版的设置里找到自选字体大小。有一个选项是可以适应系统字体大小的,但系统的字体大小跟我阅读时的字体大小怎么可能一致呢?所以我真的不知道他们是怎么想的,无论是那个插件,还是Firefox本身,为什么我要在浏览器里使用可转换md格式插件,肯定是因为我要把那当做是阅读器,阅读器的字体这么小,叫人怎么看呢?折腾了一大轮以后,最终我选定一个2016年豌豆荚已经不再更新的MarkdownEditors。这个东西几乎可以这么说,是高仿MarkdownX的,功能和界面很类似的,但是那个东西更小巧,而最重要的是,虽然不可以在软件里选择打开手机上的东西。但是从手机的文件夹打开md文件后你可以在那里全屏预览。不好的大概是如果文件里面有编程语言,你无法高亮显示,还有一个不好就是当你打开了文件,哪怕只是打开预览之后要关掉,都会问你要不要保存。对比了装了插件的Firefox和MarkdownEditors,后者的字体大一些。这两个软件我都在小米平板1上留下了,因为说不准什么时候需要互补一下,因为Firefox中md文件的编程语言是有高亮的。

如果以后我能神通广大,我觉得我会自己动手写一个代码阅读/编辑器。

2020-04
6

因为抠门,所以纠结

By xrspook @ 17:45:04 归类于: 烂日记

昨天我花了一个下午的时间去研究怎么停用小米平板1上面的系统应用。昨天晚上,我用了半个晚上的时间研究并完成了小米平板1的刷机,然后我又用了一个多小时的时间写下了自己的心得。今天早上开机,果然如我所料,一整晚的待机,电量只消耗了1%。今天我又花了一整个下午的时间去研究买个新的平板保护壳。之所以有这样的想法,是因为前两天当我把小米平板1从保护壳拆下来的时候,我才发现那个机子真的被我保护得很好,简直可以说是完美无缺。前两天,我把小米平板1的保护壳拆下来了,也把膜给撕了。

还记得把那张标透膜费了我九牛二虎之力,因为跟手机比起来,平板要贴膜的区域很大。当时我是在实验室弄的,虽然关着窗,但是灰尘还是很大。我用透明胶折腾了半天,最后才好不容易地把膜给贴上去了,但是还是有个地方有个小气泡,虽然不是太明显。除了贴膜区域大以外,我还觉得跟小米1s青春的标透膜比起来,小米平板的薄一些。排气的操作非常郁闷。之所以这么折腾,大概因为当时我手上根本没有酒精或异丙醇之类的东西,所以灰尘上去以后我一点办法都没有,除了不断地用透明胶粘掉,我没有其它招。从前想都没想过手机平板之类的可以不贴膜,实际上平板这类东西,有个保护套,根本不用膜。

之所以想到要买个新的保护套,是因为旧的那个背后的塑料已经有点粘手了,这是老化造成的。我不会拿小米平板去晒太阳,为什么也会老化?用了接近6年的东西,怎么可能不老化?!不是所有塑料都会发生这种事。从前我的手机外壳也发生过老化。那台MOTO手机背壳是金属的,但外面涂了一层黑色的胶,那层胶老化了,结果就是上面非常粘手,还洗不掉的那种。最终,我误打误撞用去茶垢的东西轻松地把那些恶心的去掉了。几乎可以这么说,当那些顽固粘手的东西遇到我去茶垢的晶体稀释的水以后,基本上就被分解掉了。聚集起来的那些不能立即分解掉,但搓一搓也就没了。

很懒惰了我想直接买一个新的外壳,但旧的那个是正版的小米,89块钱。现在的小米平板外壳基本都是第4代的。第1代的外壳只有少量。很便宜的几乎没有,被我看上眼的都30块钱以上。于是我又在那里纠结了半天,到底要买哪个。纠结来,纠结去,最终我还是选择把旧的那个外壳用各种方法清理一下。首先我用手边就有的75%酒精擦了一遍,无效。接着,我用了去水垢的柠檬酸稍微搞了一下,好像也没什么效果。然后,我上了洁厕液,效果不明显。之后,我用了小苏打,同样没效果。兜了一圈以后,最后我还是用回去水垢的柠檬酸晶体,那个东西里面除了食用柠檬酸以外还有一些高级脂肪酸,我觉得那个东西估计能起到乳化的作用。之前我只是随便沾水擦一下,但最后那下,我加大了柠檬酸的用量,而且把保护壳泡到水里,泡了好些时间。能不能达到我想要的效果暂时还不知道,因为那个东西要完全晾干了才能判断。我觉得应该有点效,因为那个黑色的保护壳塑料部分已经被我洗得有点掉色了。

最后,折腾了一圈下来,可能那些新的小米平板保护壳我一个都不用买了。

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