教程 · 2019
科技爱好者周刊
栏目汇总教程

教程 · 2019

「教程」栏目 2019 年汇总,共 9 期

第 46 期

1、如何成为一个优秀工程师(英文)

作者谈了自己在 Stripe 公司担任 SRE (系统可靠性)工程师的经历。

2、计算机如何实现除法(英文)

对于计算机来说,加法和减法比乘法容易实现,而乘法又比除法容易实现。

3、从 Google Analytics 迁移到 Fathom(英文)

如何自己架设开源的 Fathom 服务,统计网站访问情况。

4、贝佐斯的秘密是如何泄漏的(英文)

亚马逊公司老板贝佐斯的婚外情,被媒体披露,让他陷入了麻烦。媒体如何得知贝佐斯的秘密呢?这篇文章认为,原因是黑客进入了他女友的邮箱,因为该邮箱的密码早就泄漏了。

5、如何计算月相(英文)

地球看到的月亮形状是不一样的,本文通过可视化图形,解释如何通过三角函数计算月相。

6、扼杀应用(英文)

马丁·福勒认为重写重要系统的较好做法,是逐步扼杀它,而不是一次性取代。

7、Chrome 的隐藏插件

Chrome 浏览器启动的时候,会加载一些系统插件,不会在插件页显示。这里介绍如何查看这些隐藏插件。

8、JPG 和 JPG2000 格式(英文)

JPG2000 图像格式的介绍,也解释了 JPG 和 PNG 格式。

9、条形码如何工作?(英文)

怎么解读条形码,本文还给出了 Python 的扫码实现。

10、Java 开发人员调查结果 2018(英文)

一份针对全世界 Java 开发者的调查统计,有不少有趣的结果。上图是 IDE 的选择。

→ 查看本期完整内容

第 45 期

1、Finally 代码块的解释(英文)

随着 JS 引入 async/await ,开发者不可避免地会更多使用 try/catch/finally ,本文解释 finally 代码块的一些容易混淆的点。

2、一段混淆过的 JS 脚本剖析(英文)

作者收到一封诈骗 Email,比较特别的是,它不是引诱用户点击链接,而是提供了一个网页附件,让用户打开,里面是一段混淆过的 JS 脚本。

3、apt 与 apt-get 的差异(英文)

Debian 系统安装软件包有 apt 和 apt-get 两种命令,本文介绍了它们的异同。

4、TensorFlow.js 介绍(英文 PDF)

本文描述了TensorFlow.js 的设计、API 和实现,并重点介绍了一些使用实例。

5、编程语言都有中央包存储库吗?(英文)

许多语言都有中央软件包存储库,比如 npm、PyPI 和 CRAN。但是,每种编程语言都有这些吗?答案是只有39种语言有。

6、你应该记住的 DNS 地址(英文)

作者介绍了几个常用的 DNS 服务器地址,简单谈了它们之间的差异。

7、磁极的改变意味着什么?(英文)

最近,地球磁极的 N 极突然加速改变,这篇《国家地理》的报道详细介绍了背景知识。

8、Jsonnet 比 Yaml 更适合配置文件(英文)

Jsonnet 是谷歌推出的 JSON 配置文件生成工具,基本上解决了 JSON 格式的所有痛点,比 Yaml 格式更优越。

9、为什么我们从 Go 转向 PHP?(英文)

作者谈了 PHP 过去三年的改进,以及为什么更适合架设他们的网站。

10、文件系统的过去,现在和未来(英文)

文件系统的历史回顾,介绍各种文件系列的来历和特点。

→ 查看本期完整内容

第 44 期

1、MSIX文件:Windows 可执行文件的未来?(英文)

Windows有三种常见的安装程序格式: MSI,EXE 和 AppX。微软据称正在考虑推出 MSIX 格式,统一这三种格式。这种格式的最大特点就是,它是一个容器,因此有很多容器的好处。

2、K 线图的机器学习(英文)

K 线图经常用于股市预测,如果使用人工智能分析 K 线图会怎样?有人真的搞了一个机器学习模型,用无数 K 线图训练,然后去预测股价。结果非常糟糕,亏损严重,我们终于有了一个人工智能无能为力的领域。

3、安装 Google BBR(中文)

Google 开源的 TCP BBR 拥塞控制算法,可以提升网速,适合 CentOS 等内核较老的云主机升级。本文介绍安装方法。(@ansiz 投稿)

4、数字世界中的纸张——理解 PDF(中文)

一篇面向一般用户的 PDF 格式介绍,覆盖了 PDF 的适用场景、内部结构、常见误区。(@jerrylususu 投稿)

5、不要忘了控件的背景颜色(英文)

Mac 系统提供深色背景以后,网页如果忘了设置控件的背景色,可能就会出现上图的结果,控件变成了系统默认的深色背景。

6、回忆理查德·费曼(英文)

理查德·费曼是当代最著名的物理学家之一,作者在1970年代读本科期间,听过费曼的课,并与他有密切的接触。本文回忆了一些往事,主要是费曼对碰到的新问题如何做出反应。

7、戴尔49寸显示器使用感受(英文)

戴尔49英寸超宽显示器的最高分辨率为5120 x 1440,可以分成两个27英寸的16:9视图。作者谈了这台显示器的一些限制,以及使用感受。

8、不要随意放置点文件(英文)

越来越多的软件会将自己的配置文件,以点文件(dotfile)的形式放在用户的主目录下面。作者呼吁不要这样做,而要采用已有的 XDG 目录规范,将配置文件和数据文件放在该规范指定的位置。

9、树莓派的问题(英文)

作者谈了树莓派的一些局限,最大问题在哪里,哪些项目不适合使用它。

→ 查看本期完整内容

第 43 期

1、Java 语言如何实现线程间通信(英文)

一篇简单的教程,Java 语言如何实现多线程编程。

2、谷歌搜索的运算符(英文)

本文详细介绍谷歌搜索的运算符,用来定制搜索结果。

3、函数式编程的好处(英文)

著名程序员 John Carmack 谈了函数式编程对 C++ 语言的好处。不涉及代码,只是概念上的讲解。

4、取消 C++ 的预处理器(英文)

本文作者建议,不要使用预处理器定义宏(Macro),甚至不要使用(自定义的)宏。

5、Fossil 与 Git 的对比(英文)

Fossil 是专为 SQLite 开发的版本管理系统,与 Git 采用不一样的模型,总体上来说,比 Git 更简单。

6、超越 DRY(英文)

DRY 原则指的是“不要重复自己”,意思是如果代码有重复,就应该把它提炼出来。本文提出,这条原则不应过分严格地使用,有时候代码冗余对软件是有利的。

7、Deno 运行时介绍(英文)

Deno 是一个 JS/TypeScript 运行时,用来取代 Node。它的最大特点就是不支持 CommonJS,只支持 ES6 模块。

8、MIT 许可证逐句解释(英文)

MIT 是常见的开源许可证,但是很多人并没有看过它的条文。本文逐句解释该许可证的每一句话。

9、未来的 JavaScript 语言(英文)

本文介绍 TC39 委员会正在考虑的、加入 JavaScript 语言的一些新功能。

10、30年的梦想失败是什么感觉?(英文)

一个发明家受鸵鸟奔跑姿势的启发,发明了一种弹簧鞋。他为这个梦想投入了30年,依然没有成功。现在专利即将到期,30年可能就是白忙一场。

→ 查看本期完整内容

第 42 期

1、Cordova,React-Native 和 Swift(英文)

作为一个 iOS 开发者,作者谈了自己使用标题里面的三种技术,开发 App 的感受。

2、3万行代码从 Flow 迁移到 TypeScript 的经验(英文)

一篇 TypeScript 的使用体会,以及一些使用经验。

3、浏览器的 gRPC 协议支持(英文)

gRPC 是谷歌提出的一套远程服务调用的解决方案,只能用于服务器之间。本文介绍了 gRPC-Web 这个项目,旨在让浏览器也可以使用 gRPC。

4、Linux 桌面设置(英文)

本文介绍了作者如何配置 Linux 桌面开发环境。

5、安全上网指南(英文)

一份安全上网清单,从专业角度告诉你,应该做哪些事情,怎样才能安全地使用互联网。

6、如何使用树莓派架设各种网络服务(英文)

作者介绍使用一台树莓派,架设个人使用的反向代理服务器、Git 服务、看板服务的过程。

7、我的 NAS 损坏经历(英文)

作者的家用 NAS 的电路板损坏,导致所有数据都无法读出,他不得不把4块 1TB 硬盘插到台式机里面恢复数据。

8、SQLite 用作搜索服务(英文)

SQLite 有很强的读取性能,作者提出它可以用作小型网站的搜索数据库。

9、Dart 语言的异步编程(英文)

Dart 是 Flutter 框架的开发语言,语法与 JS 高度类似,也是单线程。本文介绍 Dart 语言的异步操作,可以比较与 JS 的异同。

10、实时动画将是下一个热点(英文)

随着 GPU 日益强大,实时渲染高质量的 3D 动画已经成为现实,这将改变许多行业,个人将可以制作完整的电影。

→ 查看本期完整内容

第 41 期

1、Netlify Lambda 的一个应用实例(英文)

本文使用 Netlify Lambda 服务,每当网站更新的时候,就自动到推特发一个消息。

2、HTTP 协议简史(英文)

介绍 HTTP 协议的由来和发展。(@gusibi 投稿)

3、Docker 的优缺点(英文)

一篇很简单的对 Docker 技术的评论。(@lanzhiwang 投稿)

4、mkcert 制作 localhost 证书(英文)

mkcert 是一个签发本地证书的工具,用于开发环境,最大特色是可以签发 localhost 的证书。

5、Python 类型系统入门教程(英文)

介绍 Python 新引入的数据类型系统。

6、如何识别音频广告?(英文)

作者通过机器学习和音频指纹,识别出音频里面的广告,从而可以过滤广播里面的广告,只听节目的部分。也可以分辨谈话和音乐,做到只听音乐。

7、cat 命令的历史(中文)

本文介绍了 Unix 系统的 cat 命令的由来和发展。(@pad0van__ __投稿)

8、Chris Dixon 的12个创业观点(英文)

Chris Dixon 是一个很有名的美国创业者,在网上分享过很多关于创业的想法。本文介绍他的12个观点。

9、TypeScript 写一个词法解析器(英文)

词法解析器(lexer)的作用是将源码转成一个个词元(token),本文介绍如何用 TypeScript 写一个简单的解析器。

10、电子的轨道(英文)

上面是一张常见的原子模型的图片,但是这张图片其实是错的。电子的运动其实不存在图中那种轨道,所谓电子轨道实际上是电子的能量级,至于电子真正的运行方式,我们并不知道。

→ 查看本期完整内容

第 40 期

1、Python 的 Dict 数据结构的实现(英文)

本文介绍 Dict 结构的实现原理,从最简单的哈希数组的实现讲起。

2、开发不需要“编译”的 WebApp(中文)

作者介绍如何使用 Web Components 技术开发一个网页音乐播放器。(@mantou132 投稿)

3、什么是真正的程序员(中文)

本文是一篇译文,作者仿照《小王子》中的情节,通过小 printf 遇见的不同类型的程序员,最后悟出什么才是真正的程序员!(@LanjianNUll 投稿)

4、2018年最佳笔记本电脑(英文)

这个网站评选了2018年最好的10款笔记本电脑。

5、使用 Docker 部署React(英文)

本文介绍如何制作 React 应用的 Docker 容器,并将其部署到服务器。

6、FizzBuzz 的10种语言解答(英文)

FizzBuzz 是考验编程初学者的经典题目,本文用10种语言写出答案,比较各种语言的不同。

7、去瑞典当工程师,是否值得?(英文)

一个中国开发者移居到瑞典当工程师。十年之后,他对自己这个决定的看法,留在国内好,还是去瑞典好?

8、电话键盘与计算器键盘为什么不同?(英文)

左侧是电话的拨号键盘,右侧是计算机的输入键盘,它们的排列方式为何不同?

9、我如何搭建家庭机房(英文)

作者回顾了六年来自己在家里搭建机房的过程,有大量图片。

10、现在最流行的网站技术栈是什么?(英文)

这是一个论坛的讨论帖,有人问这个问题,下面一堆回答,流行的技术基本上都提到了。

→ 查看本期完整内容

第 39 期

1、文档站点生成工具(英文)

本文以 JS 项目为例,介绍各种生成文档站点的工具。

2、软件创新和软件专利(英文)

本文总结了历史上重大的软件创新,进而提出专利制度不适合软件业,应该废除软件专利。

3、Wireguard 安装教程(英文)

介绍 Wirdguard 如何安装和配置。

4、JSON 操作命令行工具 fx(英文)

fx 可以方便地在命令行操作 JSON 数据,本文是 fx 用法的教程。

5、我不喜欢 Python 的原因(英文)

作者谈了他不喜欢的8个 Python 语法。

6、计算机如何识别图像?(英文)

本文较通俗地介绍了神经网络的历史发展和计算原理。

7、10年博客的经验(英文)

作者写了10年博客,介绍怎么可以通过博客取得最佳效果。

8、月光和放大镜可以点火吗?(英文)

假设放大镜可以无限大,能够聚焦月光以点火吗?答案是不能。

9、我的必备 iOS 软件,2018年版(英文)

一个软件工程师介绍自己安装的 iOS 软件。

10、我如何做日本糖果的邮寄服务?(英文)

一个芬兰程序员搬到日本,介绍他如何创造一个向全世界邮寄日本糖果的服务,从而赚到自己在日本的所有生活费。

→ 查看本期完整内容

第 38 期

1、Chrome 开发者工具如何使用断点?(英文)

本文通过实例讲解,如何设置事件监听断点和 watch 表达式。

2、让你的生活更轻松的9个 Bash 快捷别名(英文)

本文介绍9个实用的 Bash 函数,你可以参考他的方式,将自己常用的操作封装成函数,然后设置别名。

3、HTTP 头信息的安全设置(英文)

本文介绍跟网页安全相关的一些 HTTP 头信息。

4、25 个改变世界的芯片(英文)

本文列出了人类历史上25个最重要的集成电路。

5、为什么复印店老板都是湖南人?(中文)

这是一篇2010年的论文,作者是北京大学社会学博士,他经过调查研究后发现,全国70%的复印店老板都是湖南新化人。(@yuanjingsong 投稿)

6、安卓设备如何启用加密 DNS?(英文)

DNS 查询默认是不加密的,本文介绍如何在安卓手机上通过 cloudflare 的服务,启用加密 DNS 服务。

7、IPFS 文件系统的简单解释(英文)

本文以一种通俗易懂的方式解释 IPFS 这个基于 IP 协议的文件系统的原理。

8、Erlang 语言的20年历史(英文)

2018年12月8日是 Erlang 语言发布20年的纪念日,本文从一个历史参与者的角度回顾了这20年。

9、如何写一个 Node 命令行验证码图像识别工具(中文)

Node 命令行工具的开发实例,从 0 开始写。(@ringcrl__ __投稿)

10、为什么使用 F#?(英文)

F# 语言的特点介绍。

→ 查看本期完整内容