让人郁闷的英语学习过程
又是长时间没写博客,最近的确感觉比较忙,也说不上来到底忙的什么,一个直接的表现是甚至懒得去任务管理软件里增改条目,陷入了低效,瞎忙的境况。最郁闷的是昨天在英语流利说又测了一遍英语水平,结果跟四五个月之前一样是五级。 ...
又是长时间没写博客,最近的确感觉比较忙,也说不上来到底忙的什么,一个直接的表现是甚至懒得去任务管理软件里增改条目,陷入了低效,瞎忙的境况。最郁闷的是昨天在英语流利说又测了一遍英语水平,结果跟四五个月之前一样是五级。 ...
色轮 所有颜色都出自三「原色」,红黄蓝。 红色 + 黄色 = 橙色 红色 + 蓝色 = 紫色 蓝色 + 黄色 = 绿色 有三原色两两等量混合而得的橙色、紫色和绿色叫做「间色」。 把三种「间色」和与之相邻的「原色」再等量混合,得到的是六个「复色」。 ...
百度站长工具提供了三种自动提交链接的方法,分别是主动推送、自动推送和 sitemap。 填 sitemap 最方便,但是效果很差。我提交的 sitemap 的最后抓取时间是 2019-06-22,已经有半个多月没有抓取,即使我去后台点击「手动更新文件」也无济于事,其状态一直是「等待」。 ...
最近可能是太忙,不知不觉又是一个多月没更新博客。为了避免对待博客的这种「能躺着就不坐着,能坐着就不站着」的懒散态度,我决定更新一篇,就算是再怎么没内容也要写下去。 ...
这本书的一大特点是「短」,仅仅两百页左右,我本来是抱着读历史小故事的期待去读的,读了才知道其信息密度很大,所以也不容易读,也比我期待的历史小故事要更值得读。摘录了一些感兴趣的内容。 ...
这里的工具,是指 Linux/Unix 操作系统里的命令行工具。这些操作系统里大都有这些命令: cat, find, grep 等,最近几年,尤其是在 Rust 语言诞生之后,出现了一些新的命令行工具,跟这些老工具有类似的功能,同时更易用,更美观,性能更好。bat 可以代替 cat,fd 可以代替 find,ripgrep 可以代替 grep,此外还有 httpie,tldr,htop 等。 ...
这篇文章记录在 Koa 应用里获取真实客户端 IP 的方法、X-Forwarded-For 等 HTTP 头部字段的含义,以及相关的 Nginx 配置。 ctx.request.ip 在 Koa 里获取客户端 IP 非常容易,简单来说,ctx.request.ip 就是客户端 IP。哪个 IP 请求过来的,哪个 IP 就是客户端 IP。 ...
2 月 26 号把域名从 name.com 转到了阿里云,27 号下午在阿里云提交了备案的初审。 28 号,由于提交的网站名称不规范,并且网站还能访问,初审没有通过,到了下午六点前修正,初审通过。申请了邮寄幕布。从济南发来,走邮政,我预计第二天能到。 ...
apiDoc 可以通过文本生成体验良好的 API 文档页面,这些文本可以以注释的形式放在代码里,apiDoc 读取源码注释,就可以生成页面了,当然也可以与代码分开,写一些全是注释的文档,作为 apiDoc 生成文档页面的「源文件」。 ...
摘录了一些内容,跟这些内容在书中出现的顺序不同,打散又整理了一下。除了斜体字部分,都是对原书的引用。 应该有的态度 程序员遵从不了解混乱风险的经理的意愿,也是不专业的做法。 做好自己的事,尊重自己的手艺,写干净的代码。 糟糕的代码引发混乱!别人修改糟糕代码时,往往会越改越烂。 碰到过“从跟上就烂”的项目代码,对这种项目的改造往往较为困难,成本很高,甚至不如推到重来。 签入的代码,要比签出时整洁一点。 代码应当讲述事实,不引人猜测。 整洁的代码总是看起来像是某位特别在意它的人写的。 聪明程序员和专业程序员之间的区别在于,专业程序员了解:明确是王道。 言到意到。意到言到。 如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。 一些细节做法 (变量名的)名称长短与其作用域大小相对应。 变量声明应尽可能靠近其使用位置。 调用者应该尽可能放在被调用者上面。 应该避免我们的代码过多地了解第三方代码中的特定信息。依靠你能控制的东西,好过依赖你控制不了的东西,免得日后受它控制。 使用第三方库时,跟第三方库”划清界线“。一个可行的做法是把第三方库提供的接口再封装一层。业务代码只有自己的这层封装打交道,这样一来,如果要换用其他库,只改这个封装层,以此减少跟第三库的耦合以及依赖。 看到注释掉的代码,就删掉它。 否定式要比勘定式难明白一些。所以,尽可能将条件表示为肯定形式。 函数 函数的第一规则是要短小。第二条规则是还要更短小。 函数应该做一件事。做好这件事。只做这一件事。问题在于很难知道那件该做的事是什么。 要确保函数只做一件事,函数中的语句都要在同一抽象层级上。 在这个函数里做的事情,是同一个抽象层上的步骤,那么这个函数是只做了一件事。 函数越短小、功能越集中,就越便于取个好名字。 函数要么做什么事,要么回答什么事,但二者不可得兼。 错误处理 最好把 try 和 catch 代码块的主体部分抽离出来,另外形成函数。 函数应该只做一件事。错误处理就是一件事。因此,处理错误的函数不该做其他事。这意味着,如果关键字 try 在某个函数中存在,它就该是这个函数的第一个单词,而且在 catch/finally 代码块后面也不该有其他内容。 错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。 测试 没有测试的代码不干净。 不可测试的系统不可验证。不可验证的系统,绝不应部署。 紧耦合的代码难以编写测试。 编写测试引致更好的设计。 写测试能够反过来逼着人写出更好的代码。 测试消除了对清理代码就会破坏代码的恐惧。 整洁的测试有什么要素?有三个要素:可读性,可读性和可读性。在单元测试中,可读性甚至比在生成代码中还重要。 独立测试应该相互独立。某个测试不应为下一个测试设定条件。 让测试具有表达力并短小精悍。