Posted in Uncategorized

Solution to quickly delete youtube like and dislike records

Open this link: https://myactivity.google.com/page?hl=en&page=youtube_likes

It will bring you to the Youtube likes and dislikes webpage.

Then just click the “X” button beside the Date, e.g. July 21st.

When you do this first time, Google will pop up a dialog for notice. Then you will find you can delete without any pop ups. So you can quickly delete likes and dislikes by click the “X” button one by one.

If you want to delete all records, just click “Delete All” from the left panel:

Then it will pop out a dialogue like below:

After deleting, you can go to https://www.youtube.com/playlist?list=LL to check if the action effects. Remember, it will take several minutes to effect on Youtube webpages, just wait for a while.

Posted in Uncategorized

美国的数学考试允许使用计算器的真正原因

当我还在上初中的时候,要说有什么最喜欢玩的东西,那便是计算器。

那时我们流行用国产的自然手写计算器,不过其实功能是很弱的,远远比不上卡西欧的手写计算器。最典型的是国产的计算器表示分数只能用“a/b”的横行形式,但是卡西欧则能使用竖行形式。值得玩味的是,当时国产的计算器卖12元,而卡西欧卖120元;十年后,国产的计算器功能还是那么简陋,但是外壳做工提升了一下,便卖到30元,而卡西欧则降价到56元。

那时候每天把玩、研究计算器比打游戏还兴奋,我甚至自己不知道怎么就开发出了一种类似于倒计时的玩法,通过输入一串提前预设好的数据,然后一直按着方向键向下,就能在屏幕上连续出现10、9、8……的倒计时,而且时间正好间隔正好是1秒钟。现在回想起来,这大概是我编过的第一个程序,虽然实际上并不是编程,但是在实现方法上却和用计算机编程有异曲同工之妙(每次刷新屏幕时展示同一个静态画面,如此重复,直到一秒钟后切换到下一个静态画面)。

而在那时,我便常常听说美国的学生允许使用计算器,而老师们也常说,美国人因为爱用计算器,所以数学不如我们。那时的我年少,倒也迷信几分这种话语,全然不知道美国的数学水平在世界是前列的,而我们中国人真正进入到现代数学的体系,则可能得到鸦片战争以后。因此,光以这种浅薄的根基来说,我们中国人所谓的水平数学高超,实则是一种计算能力,而这种计算能力又是十分初等的,其实是不足挂齿的。

计算器、计算机诞生后,我们更是明白,其实所谓的单一计算,根本不是人的长处,我们比计算机聪明的地方在于我们有着很强的思维能力,而计算机则没有,但比较起单一计算能力,人则远远不如计算机。我并不是否定基础运算的作用,基础运算的能力其实是非常重要的,但远远没有我们中国人所强调的那么重要。实际上,美国中小学的学习中也是较为强调基础运算的作用的,我观察到那些做数学视频的美国人的口算能力也是很强的,不输给中国人。我们中国人学习了很久的数学,其实陷入了一种重复劳动的尴尬,劳动量很大,但是思维的提升非常有限,而美国人则往往把精力花费在如何提升数学思维上。

实际上美国的数学考试试卷也是分成允许使用计算器的部分和不允许使用计算器的部分,所以美国人也不会完全依赖计算器,而忽略算术的基本功。我们中国人可能是习惯于一刀切,所以完全地抵制计算器。大概初二、初三的时候,为了适应中考,计算器已经淡出了我的视线。到了高中,为了迎接高考,计算器更是彻底远离我的生活。从那时开始,我便疏于工具的使用,也全然忘记曾经自然探索、自然习得的乐趣。

讽刺的是,我们的数学教科书上有不少图文讲解如何使用计算器,但我们的老师却从未在课堂上教授给我们,毕竟日常学习中完全用不到,考试中也用不到,更会被视作弱化计算能力的洪水猛兽。

同样的事情发生在小学数学的方程上。尽管教科书的编排会安排一些章节专门讲解方程,但是小学数学老师们都把方程看作弱化学生数学能力的罪魁祸首,所以总是告诫学生不要使用方程,甚至命令禁止在数学试卷中使用方程解题。这样的状况我当年上小学的时候如此,如今的小学生依然如此。的确,方程作为一种简便的工具,会弱化学生的思维能力,但是未必就见得让学生耗费脑力,用传统的算术方法去解题就是一种好事。要知道将来我们用的最多的数学工具依然是方程。然而,我们在小学的时候,过分强调学生本身的智力,以为那样可以锻炼学生,殊不知这样做既没有让学生正确掌握方程的使用,也让许多学生从小学开始就厌倦了数学,以为那是一种十分困难的学科。数学研究的确是困难的,但是把数学当成工具使用并不算太难。

当然,我也要为小学数学老师说几句公道话。他们之所以禁止学生使用方程,是因为小学的数学体系本身是以算术方法为主的,如果过多使用方程,就会让数学成绩变得难看。为了应付教学考核,老师们也只好用自己的方法捍卫教学成果。所以这里面的矛盾就成了教育部认为给小学生教授方程是件好事,为初中的代数学习打下基础,但是小学数学老师却为了业绩压力,不得不对抗教育部的规划。幸好如今越来越多的小学生是直升初中,小学阶段的学业压力不断缓解,老师们也就不必过分管控学生使用方程了。

最近从头开始学习一本地地道道的美国微积分教材后,更是让我明白其中的根本差距。

我不知道中国考试强调不用计算器的原因是什么,也许是对自己祖传的算术方法比较自信,也许是怕计算器削弱学生的计算能力,也许是怕有人靠计算器作弊,但从结果而言,既然不允许使用计算器,那么考试的答案就必须是能通过手写计算而出的。这就导致了我们很容易在特殊值上获得一种简单化的倾向,从而严重削弱了在真实世界中解决问题的能力。典型的比如三角函数,如果我们为了考试方便,当然都是用几分之pi的简单值,但实际上在工程运用中,通常会出现零点几的数值,学生往往搞不明白这个值到底代表什么含义(实际上是弧度值),也不明白如何转换成常用的角度值。

上述问题紧接着而来的就是,因为我们必须尽可能地简化计算,除了使用特殊值外,还必须让整个函数变得易于计算,但现实生活中,函数往往是复杂的,因此我们就会抛弃掉那些真实的案例。而因为美国允许使用计算器,所以他们的教科书和课后练习中会直接以现实生活中会出现的各种函数来举例,我印象比较深的有日落时间和每日温度是一个经过变换的sin函数。这些真实存在的物理公式,往往带有不那么凑巧的系数,用手计算可以说是很困难,但是用计算器则不然。因此,只要是真正明白各种数学知识的原理,实际上这些题目都是不可怕的,按部就班地拿计算器计算便是。

我们这种避免使用真实工程中可能出现的情况的倾向,就很容易让书本与考试脱离实际,让学生无法掌握真正的知识原理,也无法运用到生活实践上去。长此以往,不但丧失能力,更容易产生对数学的畏难情绪,看到真实存在的那些看似很复杂实则很简单的数学公式也会觉得如临大敌,怀疑自己是不是智商不如人,也不知道学数学到底有什么用。

因此,我认为,中国的数学教育是必须摆脱重复低效的,不能把学生的精力都浪费在重复计算上。让学生真正懂得函数的意义,各种公式的意义,才是对他们的一生有根本性的帮助的,才是对整个国家和社会的进步、发展有真正的帮助的。

现代计算机、编程语言以及各类运算软件的普及,使得普通人也能掌握强大的算力,而如果放在古代,是需要职业数学家们花费几年甚至数十年去手动计算、验证一个算式的结果。所以,如果我们到了现代还将我们的思维放在计算能力这种最基础的事情上,几乎可以说对自己、对社会、对人类都是没有任何帮助的。我们应该把主要精力放在如何计算上,也就是算法。

比如我在学习极限时,给定一个函数式,要求分别以正负0.1,0.01,0.001,0.0001的差值从左右两个方向不断逼近某点a,计算出数值并列表。即便使用计算器,仍然是一项较为浩大的工程,而且意义不大,因为我们主要是要了解极限的思想。这时候,运用我所掌握的编程知识,编写一个程序,就能全自动给出运算结果。

下图便是我用自己Python编写的一段程序,只有区区几行。如果要更改函数的算式,只需要修改f(x)内的算式;如果要添加更多差值以求得更加精确的极限值,修改delta_x即可;如果要修改要逼近的点的值,修改a的数值即可。

所以,最终,我们可以得出结论:掌握思想才是王道,其次是掌握工具的使用。这样,我们才可以在通往真理的道路上越走越远,而不是原地打转。

Posted in Uncategorized

开发应与开发环境相适应:Windows下的开发环境最优解

最近尝试各种开发环境后,逐渐明白所谓的开发环境,还是原生态最好。

什么叫原生态呢?

比如C语言在Linux上就叫原生态,在Windows上就不叫原生态。最典型的例子是Visual Studio一直不支持C语言,直到最近一两年才终于开始支持C语言的开发。

在Windows上用C语言编程,可以选择的IDE少之又少,无论是界面还是功能,都不尽然如人意,甚至不乏很多老古董,比如Turbo C/C++(如图)。

这原始而又朴素的画风简直欲罢不能,但的确有很多高手当年就是靠这款IDE走上了封神之路

老手应该都知道通过编译器配合VS Code会有比较现代化的C语言编程体验,但是在Windows上找编译器那叫一个困难。

在Windows上最受欢迎的编译器是MinGW64,但是它内置的GCC版本是8.1.0,上GCC官网一查这是2018年的版本。GCC 9.0早就出了,MinGW64卡在8.0也就算了,但好歹得升级到最新的8.4吧?没办法,MinGW64的升级进度就卡在8.1不动了,基本不怎么更新。

如果你直接用Linux,一条命令就可以安装GCC,版本直接就是最新的9.0以上(也要看什么发行版,Debian应该是8.0的)。在Windows上安装MinGW64也谈不上顺畅,要下载、安装、配置环境变量等等,较为繁琐。

除了编译器版本老旧外,在Windows写C还会出现一些和Linux环境完全不同的结果。

比如用VS Code编译运行C文件,即便不加”\n”在string的结尾,最终printf()出来的结果仍然是自动换行的。但是在Linux下编译运行,结果会被忠实地还原,不加”\n”就不会换行。这样一来,在Windows下写C,一方面不利于养成添加“\n”的习惯,另一方面自己也很难排查出实际结果,以为自己当初写的时候并没有问题。

再比如在使用pointer(指针)时,Windows环境下的内存地址并不是0x开头的。

当然,最经典而且最现实的问题是,基本上经典、权威的C语言教程都是基于Linux环境,那么你用Windows编译、运行、调试时往往跟教程讲的不一样,要自己想办法解决。

可能有人比较好奇,为什么教程是基于Linux的呢?因为C语言本来就是为Unix系统而生的,C语言之父同时也是Unix系统之父,而Linux和MacOS都是基于Unix开发的,但是只有Linux是开源免费的,所以自然用Linux教学了。另一方面,如今C语言使用的场景除了教学和嵌入式开发以及Linux系统开发外,使用场景有限,真有需求都转Python和C++了,所以C语言有点old school的感觉,而old school的专家学者都很钟情Linux,说是情怀也好,但更多的是一种精神和理念的认同与传承。

用Windows作为C语言默认系统的教程不是没有,但是基本上都是不值一看的垃圾。教程作者认为在Windows装个IDE更方便学习C语言,其实是作者自己既没有精神和理念的传承,水平也比较低,甚至都不清楚C语言的核心运作原理和操作系统原理,著名代表人物自然是谭浩强了。

所以结论是,直接在Linux上写C是最不折腾的。

但是如果只有一台电脑,又比较依赖图形界面,且兼顾工作、软件生态、娱乐,怎么办呢?

最好的解决方案是主系统仍然为Windows,然后开启一台Linux虚拟机(使用Server版本即可),然后在Windows上通过VS Code、Terminal等连接那台虚拟机。VS Code现在对SSH远程开发的支持非常好,所以我非常推荐使用这一方式进行开发。

VS Code SSH远程连接教程:https://jaylinwu.wordpress.com/2020/12/30/vs-code-ssh-remote-connect-to-linux-server-real-solution/

长期开启虚拟机,其实对CPU的要求不算太高,一般最近几年生产的CPU都能轻松搞定。主要是宿主机内存要大,磁盘IO性能要好。内存建议16G起步,磁盘至少是SATA SSD且创建虚拟机时把虚拟硬盘存放在SSD上。

如果是跨平台的编程语言,则对开发环境要求没那么高,比如Java、Python,可以直接在Windows上用IDE或者VS Code。在这种情况下,我倒是比较愿意直接在Windows上跑,因为这样可以节省下开启虚拟机的资源,且代码直接在实体机上跑性能也会更好。此外,同时打开的窗口数量更少,系统UI更为统一,操作和切换的体验较好。

除了在实体机上开启虚拟机,有条件可以在本地搭建一台专门跑代码的Linux服务器。

购买一台VPS(云主机)也是不错的选择,然而,国外的云主机常常卡掉线,跑SSH极度不稳定,国内的VPS价格更加昂贵,性价比很低。根据我的初步测算,在实体机上开启本地虚拟机,哪怕只分配单核、1GB内存,其性能应该比Vultr上5美元/月的一款还要强得多。

用远程VPS的好处大概就是24小时不关机且网络条件更好(访问外网,可以开启80端口)。远程VPS当然也不用另外掏电费,但是本地虚拟机的耗电量也非常低(取决于当前任务的负载),就算跑满CPU,也不过是60W而已。除此之外,本地虚拟机使用快照等功能也是完全免费的,而VPS有可能另外收费。

当然,如果你的预算足够充足,购买高配VPS的体验应该是非常好的。

Vultr的价目表。
高配主机的性能很强,但租金价格一样不便宜,自己配一台本地实体机显然划算很多。

不过,整体而言,现在云端远程开发是一个流行的大趋势,倘若云端VPS的价格能一降再降,那么本地虚拟机的优势会被压缩。

Posted in Uncategorized

为什么我选择将博客迁移到WordPress.com上

其实一直以来,大多数单纯写文字分享博客的人总会把精力放在不该关注的地方:博客的界面样式如何、博客的SEO、博客的性能优化、博客的安全性、博客的备份、要不要上https等等。

自从上次偶然看到业内大牛讨论GitHub Pages托管博客的一篇文章,大致是说写博客的几重境界,到了最后,应该是只管自己写,其他的都交给别人去做。此语可谓一语点醒梦中人,让我明白为什么自己在Digital Ocean上搭建了WordPress,反而不热衷于写作了:为外物所累。

Continue reading “为什么我选择将博客迁移到WordPress.com上”