作者谈了自己在 Stripe 公司担任 SRE (系统可靠性)工程师的经历。
对于计算机来说,加法和减法比乘法容易实现,而乘法又比除法容易实现。
如何自己架设开源的 Fathom 服务,统计网站访问情况。
亚马逊公司老板贝佐斯的婚外情,被媒体披露,让他陷入了麻烦。媒体如何得知贝佐斯的秘密呢?这篇文章认为,原因是黑客进入了他女友的邮箱,因为该邮箱的密码早就泄漏了。
地球看到的月亮形状是不一样的,本文通过可视化图形,解释如何通过三角函数计算月相。
马丁·福勒认为重写重要系统的较好做法,是逐步扼杀它,而不是一次性取代。
Chrome 浏览器启动的时候,会加载一些系统插件,不会在插件页显示。这里介绍如何查看这些隐藏插件。
JPG2000 图像格式的介绍,也解释了 JPG 和 PNG 格式。
怎么解读条形码,本文还给出了 Python 的扫码实现。
一份针对全世界 Java 开发者的调查统计,有不少有趣的结果。上图是 IDE 的选择。
随着 JS 引入 async/await ,开发者不可避免地会更多使用 try/catch/finally ,本文解释 finally 代码块的一些容易混淆的点。
作者收到一封诈骗 Email,比较特别的是,它不是引诱用户点击链接,而是提供了一个网页附件,让用户打开,里面是一段混淆过的 JS 脚本。
Debian 系统安装软件包有 apt 和 apt-get 两种命令,本文介绍了它们的异同。
本文描述了TensorFlow.js 的设计、API 和实现,并重点介绍了一些使用实例。
许多语言都有中央软件包存储库,比如 npm、PyPI 和 CRAN。但是,每种编程语言都有这些吗?答案是只有39种语言有。
作者介绍了几个常用的 DNS 服务器地址,简单谈了它们之间的差异。
最近,地球磁极的 N 极突然加速改变,这篇《国家地理》的报道详细介绍了背景知识。
Jsonnet 是谷歌推出的 JSON 配置文件生成工具,基本上解决了 JSON 格式的所有痛点,比 Yaml 格式更优越。
作者谈了 PHP 过去三年的改进,以及为什么更适合架设他们的网站。
文件系统的历史回顾,介绍各种文件系列的来历和特点。
Windows有三种常见的安装程序格式: MSI,EXE 和 AppX。微软据称正在考虑推出 MSIX 格式,统一这三种格式。这种格式的最大特点就是,它是一个容器,因此有很多容器的好处。
K 线图经常用于股市预测,如果使用人工智能分析 K 线图会怎样?有人真的搞了一个机器学习模型,用无数 K 线图训练,然后去预测股价。结果非常糟糕,亏损严重,我们终于有了一个人工智能无能为力的领域。
Google 开源的 TCP BBR 拥塞控制算法,可以提升网速,适合 CentOS 等内核较老的云主机升级。本文介绍安装方法。(@ansiz 投稿)
一篇面向一般用户的 PDF 格式介绍,覆盖了 PDF 的适用场景、内部结构、常见误区。(@jerrylususu 投稿)
Mac 系统提供深色背景以后,网页如果忘了设置控件的背景色,可能就会出现上图的结果,控件变成了系统默认的深色背景。
理查德·费曼是当代最著名的物理学家之一,作者在1970年代读本科期间,听过费曼的课,并与他有密切的接触。本文回忆了一些往事,主要是费曼对碰到的新问题如何做出反应。
戴尔49英寸超宽显示器的最高分辨率为5120 x 1440,可以分成两个27英寸的16:9视图。作者谈了这台显示器的一些限制,以及使用感受。
越来越多的软件会将自己的配置文件,以点文件(dotfile)的形式放在用户的主目录下面。作者呼吁不要这样做,而要采用已有的 XDG 目录规范,将配置文件和数据文件放在该规范指定的位置。
作者谈了树莓派的一些局限,最大问题在哪里,哪些项目不适合使用它。
一篇简单的教程,Java 语言如何实现多线程编程。
本文详细介绍谷歌搜索的运算符,用来定制搜索结果。
著名程序员 John Carmack 谈了函数式编程对 C++ 语言的好处。不涉及代码,只是概念上的讲解。
本文作者建议,不要使用预处理器定义宏(Macro),甚至不要使用(自定义的)宏。
Fossil 是专为 SQLite 开发的版本管理系统,与 Git 采用不一样的模型,总体上来说,比 Git 更简单。
DRY 原则指的是"不要重复自己",意思是如果代码有重复,就应该把它提炼出来。本文提出,这条原则不应过分严格地使用,有时候代码冗余对软件是有利的。
Deno 是一个 JS/TypeScript 运行时,用来取代 Node。它的最大特点就是不支持 CommonJS,只支持 ES6 模块。
MIT 是常见的开源许可证,但是很多人并没有看过它的条文。本文逐句解释该许可证的每一句话。
本文介绍 TC39 委员会正在考虑的、加入 JavaScript 语言的一些新功能。
一个发明家受鸵鸟奔跑姿势的启发,发明了一种弹簧鞋。他为这个梦想投入了30年,依然没有成功。现在专利即将到期,30年可能就是白忙一场。
作为一个 iOS 开发者,作者谈了自己使用标题里面的三种技术,开发 App 的感受。
3万行代码从 Flow 迁移到 TypeScript 的经验
一篇 TypeScript 的使用体会,以及一些使用经验。
gRPC 是谷歌提出的一套远程服务调用的解决方案,只能用于服务器之间。本文介绍了 gRPC-Web 这个项目,旨在让浏览器也可以使用 gRPC。
本文介绍了作者如何配置 Linux 桌面开发环境。
一份安全上网清单,从专业角度告诉你,应该做哪些事情,怎样才能安全地使用互联网。
作者介绍使用一台树莓派,架设个人使用的反向代理服务器、Git 服务、看板服务的过程。
作者的家用 NAS 的电路板损坏,导致所有数据都无法读出,他不得不把4块 1TB 硬盘插到台式机里面恢复数据。
SQLite 有很强的读取性能,作者提出它可以用作小型网站的搜索数据库。
Dart 是 Flutter 框架的开发语言,语法与 JS 高度类似,也是单线程。本文介绍 Dart 语言的异步操作,可以比较与 JS 的异同。
随着 GPU 日益强大,实时渲染高质量的 3D 动画已经成为现实,这将改变许多行业,个人将可以制作完整的电影。
本文使用 Netlify Lambda 服务,每当网站更新的时候,就自动到推特发一个消息。
介绍 HTTP 协议的由来和发展。(@gusibi 投稿)
一篇很简单的对 Docker 技术的评论。(@lanzhiwang 投稿)
mkcert 是一个签发本地证书的工具,用于开发环境,最大特色是可以签发 localhost 的证书。
介绍 Python 新引入的数据类型系统。
作者通过机器学习和音频指纹,识别出音频里面的广告,从而可以过滤广播里面的广告,只听节目的部分。也可以分辨谈话和音乐,做到只听音乐。
本文介绍了 Unix 系统的 cat 命令的由来和发展。(@pad0van_ _投稿)
Chris Dixon 是一个很有名的美国创业者,在网上分享过很多关于创业的想法。本文介绍他的12个观点。
词法解析器(lexer)的作用是将源码转成一个个词元(token),本文介绍如何用 TypeScript 写一个简单的解析器。
上面是一张常见的原子模型的图片,但是这张图片其实是错的。电子的运动其实不存在图中那种轨道,所谓电子轨道实际上是电子的能量级,至于电子真正的运行方式,我们并不知道。
本文介绍 Dict 结构的实现原理,从最简单的哈希数组的实现讲起。
作者介绍如何使用 Web Components 技术开发一个网页音乐播放器。(@mantou132_ _投稿)
本文是一篇译文,作者仿照《小王子》中的情节,通过小 printf 遇见的不同类型的程序员,最后悟出什么才是真正的程序员!(@LanjianNUll_ _投稿)
这个网站评选了2018年最好的10款笔记本电脑。
本文介绍如何制作 React 应用的 Docker 容器,并将其部署到服务器。
FizzBuzz 是考验编程初学者的经典题目,本文用10种语言写出答案,比较各种语言的不同。
一个中国开发者移居到瑞典当工程师。十年之后,他对自己这个决定的看法,留在国内好,还是去瑞典好?
左侧是电话的拨号键盘,右侧是计算机的输入键盘,它们的排列方式为何不同?
作者回顾了六年来自己在家里搭建机房的过程,有大量图片。
这是一个论坛的讨论帖,有人问这个问题,下面一堆回答,流行的技术基本上都提到了。
本文以 JS 项目为例,介绍各种生成文档站点的工具。
本文总结了历史上重大的软件创新,进而提出专利制度不适合软件业,应该废除软件专利。
介绍 Wirdguard 如何安装和配置。
fx 可以方便地在命令行操作 JSON 数据,本文是 fx 用法的教程。
作者谈了他不喜欢的8个 Python 语法。
本文较通俗地介绍了神经网络的历史发展和计算原理。
作者写了10年博客,介绍怎么可以通过博客取得最佳效果。
假设放大镜可以无限大,能够聚焦月光以点火吗?答案是不能。
一个软件工程师介绍自己安装的 iOS 软件。
一个芬兰程序员搬到日本,介绍他如何创造一个向全世界邮寄日本糖果的服务,从而赚到自己在日本的所有生活费。
本文通过实例讲解,如何设置事件监听断点和 watch 表达式。
本文介绍9个实用的 Bash 函数,你可以参考他的方式,将自己常用的操作封装成函数,然后设置别名。
本文介绍跟网页安全相关的一些 HTTP 头信息。
本文列出了人类历史上25个最重要的集成电路。
这是一篇2010年的论文,作者是北京大学社会学博士,他经过调查研究后发现,全国70%的复印店老板都是湖南新化人。(@yuanjingsong 投稿)
DNS 查询默认是不加密的,本文介绍如何在安卓手机上通过 cloudflare 的服务,启用加密 DNS 服务。
本文以一种通俗易懂的方式解释 IPFS 这个基于 IP 协议的文件系统的原理。
2018年12月8日是 Erlang 语言发布20年的纪念日,本文从一个历史参与者的角度回顾了这20年。
Node 命令行工具的开发实例,从 0 开始写。(@ringcrl_ _投稿)
F# 语言的特点介绍。
本文用 JavaScript 语言演示如何写解析器,将代码转为抽象语法树 AST,然后再写编译器,将其转为汇编语言。
放弃 Linux,试试 FreeBSD 或 Illumos?
本文提出 FreeBSD 或者基于 Solaris 的 illumos 在功能上优于 Linux,更值得尝试。
本文用浅显的语言介绍,如何写一个简单能够识别热狗图像的 Sketch 插件。(@Anderson-Liu 投稿)
一篇科普文章,不仅介绍了物理意义的熵,还介绍社会内部的熵、公司内部的熵等。
Docker 的 Image 文件是分层的,本文简单介绍怎么查看每一层的内容,它们又是怎么组合成一个可以运行的 Image 文件。这里还有另外一篇类似的文章,通过控制分层来缩小 Image 文件尺寸。(@tifazxy 投稿)
hapi 框架的作者介绍该框架的特点。这里还有一篇《值得关注的10个 Node.js 框架》。
英国一个民间机构如何使用互联网公开资料,追查两个俄罗斯间谍的故事。
王垠老师的《解密计算机科学》还没写完,又开始写第二本书《解密英语语法》。发布第一章以后,第二天他又把这个计划取消了,"我曾经想过把这写成一本完整的语法书,可是后来发现似乎一篇文章足矣。"(@wblovezqy_ _投稿)
vimdiff 是一个显示文件 diff 的命令行工具,本文主要介绍怎么改用其他算法,以不同的格式显示 diff。
谷歌代码搜索的作者,介绍搜索的算法原理。
这篇长篇报道介绍 RockStar 游戏公司和它开发的游戏《Red Dead Redemption 2》。
本文收集各种网页入侵的技术,已经收集了十多种。
微服务是目前流行的架构,但是会增加复杂性,比如一个 API 变成多个 API(上图)。本文讨论了哪些情况不应该使用微服务。
网页加载谷歌字体的最大问题是加载速度较慢,会影响网页体验。Cloudflare 提供 Worker 方案,可以改写用户的字体请求,从而加速字体加载。
介绍了 Vue.js 的发展历程,以及背后的想法。(@M1seRy_ _投稿)
作者较深入地评论了目前 Flutter 框架开发手机应用的优缺点,总体上还是鼓励大家使用它。
作者提出,现在那些 MVC 应用其实改叫 MVA 更合适,也就是把 Controller(控制器)改成 Adapter(适配器)。
本文介绍了 QUIC 协议的一些优点。作者提出,QUIC 与其称为 HTTP/3,不如称为 TCP/2。
HTML 网页的<a>元素打开的子网页,可以用window.opener.location.replace()方法替换掉父窗口的网址,这会带来风险。
上线前,唯一测试就是女朋友玩了几天。如果卖不出去(绝大多数游戏的结局),四年就浪费了,幸好成功了。不过,这个游戏借鉴了任天堂的《牧场物语》,有人认为他抄袭了。
本文教你如何向硬盘的主引导扇区 MBR 写入程序,使得计算机可以在没有操作系统的情况下运行程序,显示 Hello World。
本文提出地址输入不应该有两个输入框,而是应该只是一个 textarea。
使用通俗的语言介绍 ZIP 算法,文章较长。(@chowc 投稿)
新版的 Gmail 用谷歌自家的 Lighthouse 评估性能,100分里面只得了2分。下载的脚本有6MB,完全渲染需要9秒,其中一半代码可能根本用不到。有人分析了代码,发现过时的早期代码都还在。猜测由于过于复杂,现有团队可能没有能力升级底层,只做了一些样式的更新。
作者回顾了使用 TypeScript 两年的经历,总体上还是推荐的,也提出了一些值得注意的问题。
作者解释了什么是极简主义的态度开发软件。
2018年 JS 开发者的调查报告,主要是各种框架、工具的使用情况。
《超人特工队2》的设计师介绍他们如何从现实生活吸收灵感,设计画面,多图。
TOML 格式的介绍、中文文档翻译和解析工具。(@LongTengDao 投稿)
如果你不知道哪个提交引入了错误代码,就可以使用 git bisect 命令利用二分法,逐步定位到错误的提交。
有人分析了 GitHub 上面56万个项目的 package.json 的依赖项,得到了一些结论,比如过去一年被依赖最多的30个模块。
本文使用 Swift 语言操作 Excel 电子表格。文中解释了 Excel 的格式,理论上其他语言也可以做到。
如果你想从头学习 Clojure 语言,可以读这篇教程,内容非常详尽。
www.example.com 和 example.com 哪一个合适作为主站的域名?这里的关键问题是,example.com 设置的 Cookie 可以被子域名读取,并一起发送到服务器。
UDP 协议不如 TCP 协议可靠,这是大家都知道,但是这个协议到底丢包率有多高?有人做了测试,结果发现丢包率并不高,主要的问题是数据包的顺序。
本文介绍如何使用 VS Code 编辑器调试 Node 代码。
JavaScript 的对象复制默认是浅拷贝,本文介绍如何深拷贝。
Netlify 的 lambda 函数可能是现在最简单的 Serverless 实现,本文教你如何完成一个 hello world 示例。
本文统计了世界最大的前50万个网站返回的 HTTP 回应,其中最常见的30种 HTTP 头信息包括了很多错误的用法。
看板(kanban)是管理 issue 的流行方式,一般的看板是垂直的。本文提出,这是因为日本文字是直排的,而看板是日本人发明的,西方文字是横排的,所以看板应该改成水平。
Linux 系统的 man 帮助文件通常很冗长,难以查阅,这个项目提供简化的 man 文件。(@chenylvia 投稿)
本文作者讲述如何将红米手机重刷系统,剔除了所有谷歌相关的服务。
IPFS 是一个分布式的互联网协议,底层机制类似于将网站发布到区块链。本文介绍 IPFS 的特点,不涉及技术细节。
本文介绍亚马逊网络服务(AWS)对用户提供的子网服务。每个购买 AWS 的用户会分配到一个 VPC(虚拟私有云),即一个虚拟子网,比如 10.0.0.0/16,文章介绍与之相关的一些概念和知识。
本文用一个简单的例子解释什么是 CDN,以及它的好处。
HAProxy 是一个负载均衡服务器,自带过滤 HTTP 请求的功能,可以防止应用层的 DDOS 攻击,这方面比 nginx 更强大。
本文介绍 Python 的各种数据序列化方案,包括 XML、JSON、MsgPack、Protobuf、Thrift等。
本文介绍如何为自己的应用定制一个调色板,指定各种颜色。
长期以来,DNS 请求一直是不加密的,这造成 DNS 可能被监听和篡改。最新的方案是推广 DNS over HTTPS,即对 DNS 请求加密,Mozilla 基金会的这篇文章解释了这是怎么回事。
网页加载Three.js、Rust 和 WebAssembly
本文通过一个简单的实例,介绍网页如何加载用 Rust 写的 WebAssembly 模块。
网络数据包如果一次发送太多,就会造成网络拥堵;如果发送太少,就浪费了带宽,延长了通信时间。TCP 协议有一个拥堵窗口机制,负责动态调整每次发送数据包的数量。本文通俗地解释了这种算法的细节。
本文使用 Go 语言编写一个非常简单的前端单页应用,然后将它编译成 WebAssembly。所有功能,包括前端组件和前端路由,都是用 Go 写的。看上去,网页编程即将不再是 JS 的专利了。
本文列出了影响程序员工作效率的常见情景:工作经常被打断、领导进行微观管理、产品需求不断扩大等等。
Pandas 是一个用于数据操作和分析的 Python 库,本文通过一个范例,介绍如何使用它对 CSV 文件进行数据处理。
介绍排版的基本知识。
一位风险投资家的观点,如何判断一家创业公司是否值得投资。
如果你喜欢 Vim 的便捷,又喜欢 VS Code 的图形界面,那么可以试试 Neovim。本文介绍如何配置 Neovim,以适应 JavaScript 开发。
本文是《Python 工匠》系列的第三篇,介绍在 Python 中编写与数字和字符串相关代码的建议与技巧。(作者@piglei_ _投稿)
如何才能最好地使用 GitHub 管理项目,本文提供了具有可操作性的十条建议。
公共汽车的间隔时间为10分钟,那么平均等待时间应该为5分钟,但是如果进行抽样,你会发现抽样得到的平均时间为10分钟,这是为什么?简单说,原因就是等待时间越长的人,越容易被抽样到。
一个程序员解释他眼中 Java 语言的优点。
作者注意到,编程与编程语言几乎没有关系,学生可能只是在学编程语言,而不是在学编程。
现在的前端开发大量使用单页应用 SPA,使得前端的复杂性急剧增加。这篇文章提出,SPA 可能被过度使用了,大部分情况下,你可能不需要单页应用。
本文介绍了机器学习最基本的十种算法,比如线性回归、朴素贝叶斯、KNN聚合等。
10月21日,GitHub 发生了一次持续24小时的故障,本文是该公司的事后故障分析。主要原因是,当天两个数据中心之间的光纤断了43秒,导致主库与从库之间数据不同步,而且没法确定哪一个镜像是数据完整的,不得不从头做数据恢复。
美国国家航天局计算时,使用 Pi 小数点后15位。这样的话,即使轨道半径是250亿英里,计算误差也小于手指的长度(几厘米)。
Pandoc 是一个文档格式转换工具,本文介绍如何使用它,将 Markdown 源码转成网页,发布到 AWS S3。
本文通过一个实例,一步步演示二维码的生成算法。
压缩是最常用的功能之一,压缩算法一般分成两大类:基于熵的压缩和基于字典的压缩。本文简单解释这两类算法的原理,以及将它们合在一起的 deflate 算法。
Manjaro 是一个新的 Linux 发行版,内核采用 Arch Linux,UI 采用 Deepin,集灵活性和易用的 UI 于一体。
本文回顾了加密发展的几个阶段,每个阶段都给出了 Python 的小例子。
本文提出网页的无限滚动并不是一个好的设计,应该限制使用或者停止使用。
WebAssembly 目前只是 MVP(最小可行产品)阶段,本文介绍了这种编译语言未来可能具有的功能。
YAML 格式虽然比 JSON 格式易读易写,但也有很多问题。这种格式其实很复杂,并不是配置文件的理想格式。
Pokemon GO 是一个在地图上捕捉口袋妖怪的游戏,初看起来相当无聊,不需要任何游戏技能。但是该游戏取得了惊人的成功,这是为什么?
本文对三个层次的(初级、中级、高级)用户,介绍最合适的 Linux 发行版,用于桌面系统。对新手有一定的参考价值。
网页性能的基础知识,针对初学者,内容比较全。
RFC 是很多互联网协议的标准,但是它是文本文件,不太容易阅读。本文介绍 RFC 文档的相关知识。
本文总结了几种奇特的缩进方式。比如,每一层缩进都是前两层缩进之和,这就叫做斐波拉切缩进。
Flutter 开发的一个简单教程。
本文介绍如何使用 TensorFlow.js 进行深度学习,自动玩 Chrome 浏览器的恐龙跳跃游戏。
有一点是肯定的,树木需要将水从根部运送到顶部。如果树高100米,树木内部有什么机制可以将水运送得这么高?要知道,一个大气压的情况下,吸管最多只能将水吸到10米的高度,要达到100米,树的内部难道存在10个大气压?
网页从服务器拿到数据,需要保存下来,但是不想存在 Cookie 和 LocalStorage,怎么办?这篇文章的方法就是动态生成一张 Canvas 的 PNG 图片,将数据存在里面。
本文介绍 GraphQL 的概念和优点,演示如何用 Express.js 搭建一个 GraphQL 后端。
网页的 <head> 元素可以放置很多东西,本文列出了其中一些主要的内容,可以当作参考手册。
本文介绍如何配置网站,接受 IPv6 的访问。
前端框架 React 的路由库教程,提供在线代码运行示例,例子简洁能说明问题。(@Anderson-Liu 投稿)
作者注意到一个现象,同一台机器,Java 线程最多只能建几千个,但是 Go 线程可以建数百万个。他研究后发现,这跟线程的内存占用有关,每个 Go 线程竟然只占用4KB。
本文教你如何用 C++ 写一个二进制程序,每当收到通过 CGI 网关发来的调用请求时,自动返回一个网页。其他后端语言也可以用来写网页,原理是一样的。
GraphQL 是客户端请求服务器数据的一种新技术,本文分析的它的优点和局限。
现在,程序员编程都是针对某种硬件架构,比如 CPU 或 GPU,但是也可以为某种计算定制电路,这种电路专门用来完成这种计算,这就叫做 FPGA。本文介绍 FPGA 的特点,长处和短处。
DHCP 协议全称是"动态主机配置协议",局域网的设备往往使用这个协议获得动态 IP 地址。本文解释这个协议的运作过程。
图解 HTTPS 对话过程,非常形象,每一个字节的含义都讲到了。
通过 JavaScript 代码解释函数式编程的一些基本概念。
本文谈了这两种语言各自的长处和短处。
作者写了一个脚本,查询 whois 数据库里面最老的域名。最早的 .com 域名是 symbolics.com(1985-03-15 注册),最早的 .net 域名是 nordu.net(1985-01-01 注册)。
想写 Chrome 浏览器的扩展吗?可以看这篇教程,很容易懂。原始代码有一些小问题,我重新做了一个 Demo。
想要搭建家用储存系统的朋友,可以看这篇教程,使用树莓派和移动硬盘,搭建一个 NAS,操作简单,可玩性高,费用便宜。
流行的观点认为,Kubernetes 是一种过于复杂的技术,只适用于非常大的机器群。我认为这可能是错的,Kubernetes 适用于小型项目。
本文是对上一篇文章的反驳。
本文讨论如何使用window.requestAnimationFrame() 测量脚本操作的准确耗时。
美国国家标准技术研究所(NIST)编写的介绍区块链的小册子,针对一般读者,内容比较全面完整。
一个硅谷工程师起诉了他的华人老板,还制作了一个极其详细的网页。我觉得这招很好,值得借鉴。不管官司能否赢,我要让你曝曝光。
《南华早报》的长篇可视化报道,解释为什么国际航线弯弯曲曲,不采用最近的直线距离飞行。本文图文并茂的呈现方式,值得借鉴。
CSV 和 JSON 两种数据格式的介绍和比较。很多人忽略的一个事实是,最近几年 CSV 的使用量一直在上升。
许多主流语言都采用抛出异常的方式处理错误,这篇文章认为,这种设计是错误的,传统的返回值是更好的方式。抛出异常的主要好处是,可以将业务代码与错误处理代码分开,缺点是它改变了控制流,有点像 goto 语言,可以随意跳转。
技术文档(documents)分成四种:教程(tutorial)、指导(guide)、解释(explanation)和参考(reference)。本文解释了每一种文档的特点,并给出了写作建议。
1999年,阿里巴巴集团成立,当时共有18位创始人,大部分是马云的同事、朋友和学生。这篇文章汇总了这18个人的公开资料。
Qt 是一个 C++ 写的跨平台控件库,PyQt 将其移植到 Python,可以很方便地为 Python 脚本添加图形界面。
本文解释了什么是微服务架构,并且给出了一个简单的示例,在 Docker 里面使用 Flask 框架和 ZeroMQ 搭建一个简单的微服务应用。
Linux 发行版一般都自带桌面环境,如果你需要的只是一个好用的命令行,那么你可以放弃桌面环境,改用窗口管理器。i3 就是一个很好用的平铺式窗口管理器,本文给出了五个推荐理由。如果你有兴趣的话,这里还有一篇简单教程。
如果你还在用广告拦截器,Pi-hole 是更好的选择。它是树莓派上的 DNS 服务器,架设在局域网里面,内置黑名单,拦截广告域名的 DNS 请求。从此,局域网所有设备都看不到广告。
本文介绍如何使用 ncurses 这个 C 语言标准库,写一个简单的命令行动画。
本文通过一个很简单的单页应用,演示如何将 Web 应用放到 Docker 里面,然后通过 Docker 运行。
PyPy 是用 Python 编写的 Python 解释器,这也是它名字的来源。该项目的创始人回顾了走过的十五年。
Linux 内核与 Mac 内核虽然都源于 Unix,但是差别较大。Mac 内核继承 BSD Unix,有一些很老的代码,并且做了大量的定制。
一些虚拟私有网络的相关知识。
本文列举如何用 date-fns 或者原生方法,取代 moment.js。
决定使用 Severless 架构之前,你应该读一下这篇文章,了解这种架构的一些问题。目前,最大的问题是,一旦用了它,就很难再摆脱对服务提供商的依赖。
IPFS 是一个具有 web 接口的分布式数据库,一旦写入,你的内容就将永远存在,且无法修改。本文是一篇很不错的介绍文章, Cloudflare 在文中宣布开通 IPFS 网关服务。如果你有自己的 IPFS 节点,就可以让 Cloudflare 的 CDN 网络分发你的内容。
ActivePub 是一种分布式的通信协议,本文以 Mastodon 为例,介绍为什么它可以改变互联网。
Github 正在测试语义搜索,匹配的依据不再是关键字,而是搜索的语义。比如,搜索"连接两个字符串",就会跳出相关的代码。本文介绍实现细节。
Facebook 在开发 React 的同时,还发明了一种新语言 Reason,它是 OCaml 语言的变种。Reason 和 React 的创始人是相同的,这篇文章解释了为什么 Reason 语言天生适合写 React 应用。
简单的歌词通常有重复的内容。这篇文章使用压缩算法,比较现在的歌词与过去的歌词,看看哪个压缩得更小,内容更简单。
HTML 网页的 <input> 元素有几十个属性,本文介绍其中三个开发者比较不熟悉的属性。
这篇文章很容易懂,解释怎么使用 serverless 服务,修改 HTTP 回应。这个服务看起来很好用,缺点好像是只有使用 Cloudflare CDN 的网站才能用。
《人类简史》的作者尤瓦尔·赫拉利的最新文章。他提出,人工智能有利于政府,可以将权力集中在少数精英手里。唯一可能的解决方法,是寻找分布式的技术方案,防止资源的集中。
脚本的第一行为什么以 #! 开头?Shell 内部又是如何处理脚本的?
Chrome 66 支持 Presentation API,这个 API 允许浏览器定制投射到第二块屏幕的内容,使用脚本进行控制。
网页可以向第三方站点发出请求,这是 CSRF 攻击的主要原因。这篇文章总结了可能发出第三方请求的七种情况。
本文从协议设计的顶层角度,总体上解释互联网协议的设计思想。
本文解释了 Redux 想要解决的问题,而 GraphQL 可以解决同样的问题。但是,该文没有给出细节。
为了提高安全性,防止监听,DNS 查询已经可以在 HTTPS 协议上完成。这篇文章教你怎么写一个 Node 客户端,获取 DNS 信息。
本文介绍著名的压缩算法霍夫曼编码的发明人戴维·霍夫曼的故事。
本文是 V8 官方团队写的历史回顾,介绍 V8 每一年在技术上的突破。
Lisp 是函数式语言的鼻祖,入门难度较高。作者给出了学习途径。
本文以一个 C 语言的 GIF 解析库为例,介绍怎么把它编译成 WebAssembly 用在浏览器。
一篇针对普通读者的区块链入门介绍,写得比较好懂,还带有互动性的示例。
答案是利用新建 tab 的时候会新建 Session 这个特点,可以创建一个 uuid 写入 sessionStorage,每个请求都附上这个 uuid,就可以区分 tab 了。
使用 Google Cloud Functions 运行端对端测试
谷歌云服务最近内置了 Puppeteer。本文介绍如何使用这个功能,完成云端的端对端测试。
这篇文章给出增强版命令行工具的清单,比如 bat 取代 cat,htop 取代 top 等等。
容器实际上是 Linux 进程的一种特殊封装,这组系列文章介绍了容器的底层知识。
PySimpleGUI 是一种为 Python 脚本加入图形界面的简单方案。
Julia 是一种新兴语言,设计目录是兼具 C 的速度和 Python 的灵活语法。本文介绍它的基本语法。
这篇文章很不错,用最简单的语言介绍了二叉树和 go,还有大量配图。
本文介绍大型网站架构的基本知识。
Go v1.11 引入了模块(module)的概念,主要为了使用语义版本,解决依赖升级的兼容性问题。
"about: "开头的网址,返回与浏览器本身相关的内容,最常用就是空网址 about: blank ,以及 about:history 。
.ipynb 文件是一种在网页上运行的代码运行时,可以实时看到运行结果,支持40多种语言的运行,包括 Python,R,Julia 和 Scala。它是由 Jupyter Notebook 生成的,本文介绍5种支持 Jupyter 的云服务。
操作系统都有自己的 Webview,Mac 是 webview,Windows 是 MSHTML,Linux 是 gtk-webkit2。这篇文章教你怎么用 Webview,开发一个跨平台的桌面打飞机游戏。
大部分情况下,我们使用市场上现有的 CDN 服务。但是,你也可以自己搭一个,这篇文章教你怎么做。
作者原来是一个 Java 开发者,后来转为使用 Node。他比较了这两种语言。
如何将 WordPress 站点发布成 Gitlab 静态页面站点?
WordPress 是常用的博客软件,虽然方便易用,但是容易产生安全问题。作者提供了一个脚本,可以将 WordPress 网站的 HTML 页面,部署到 Gitlab Pages 服务,做成一个静态网站。
WireGuard 内部实现原理的一些介绍,以及与现有方案的比较。
Serverless 作为服务导向架构的一种形式,有很多优点。本文介绍了使用这种架构时,应该注意的问题。
有一句名言:"计算机科学有两大难题:缓存不一致和变量命名。"本文就介绍缓存与源数据不一致的基本知识。
用户发出的请求,很大一部分是缓存服务器响应的。这意味着,不一定需要感染源站,只要能在缓存服务器注入恶意代码,就能达到目的。本文给出了这方面的详细介绍以及实际的案例。
OCaml 是一种通用语言,在函数式编程里面加入了命令式编程和面向对象编程的特性。
Python 有大量的魔术方法(方法名前后有两个下划线),本文给出了一个完整的介绍。
本文详细指导你搭建一个免费推特机器人,每当有人在推特 follow 你,就会收到一条欢迎私信。
地中海沿岸,很多城市最热闹的大街就在海边。我一直很奇怪,难道他们不怕涨潮吗?现在终于确认了,地中海几乎没有潮汐。
Swift 语言一般用于开发 iPhone 的 App,现在开始有人尝试将它用于服务端编程。
想要学习浏览器自动化的同学,可以看看这篇中文教程。
.snap 是一种新的 Linux 安装包格式,最大特点就是自带依赖,某种程序上很像容器。
本文比较了谷歌、微软、亚马逊、IBM 四家公司的人脸检测服务的准确性。
本文讲解了 Java 面试经常遇到的各种算法问题。
Vi 是 Unix 系统的常见编辑器。它最初是 ed 编辑器的改写,vi 表示 ed 的 visual 模式,后来有人写了增强版 vi improved,这就是 vim 的来历。
Mastodon 是开源的 Twitter 克隆。它的最大特点是允许多个实例(即服务器)之间的互相联系,比如引用一个用户需要给出他所在的实例地址(@foo@mastodon.instance),有点像 Email 的概念。
作者讲述了,他如何在30分钟内发现 Homebrew 的一个漏洞,从而可以向代码库提交代码。Homebrew 是 Mac 环境最广泛使用的开发工具之一,一旦注入恶意代码,后果非常严重。这个事情提醒我们,使用网上下载的任何代码,都必须非常小心。
Kotlin 是安卓设备替代 Java 的一种编程语言,本文介绍了它的一些胜过 Java 的地方。
本文介绍 Go 语言对比 Python 的优点。
本文测试了几个全球性的公共 DNS 服务提供商,结果第一名是 Cloudflare,第二名是 Google。
Python 的长处不是性能,但是采用本文的方法,可以减少一些不必要的资源浪费。
本文使用图片对比,列出网页外观设计的15个注意点。上图左侧是改造前的网页,右侧是改造后。
axios 是一个非常流行的 JavaScript 语言的 HTTP 请求库,本文分析它的内部设计。
如果你需要在 Python 语言用到随机数,看这篇文章就够了。
Cherry 是世界最著名的机械键盘品牌,这篇文章介绍这个品牌的历史。
Python 初级语法教程。
提高 SSH 安全等级的一些知识。本文较难,需要密码学知识。
Google 官方介绍 Kubernetes 这个项目是怎么诞生的。
这组系列文章介绍脚本语言的运行虚拟机(VM)怎么写。
本文从 C 程序员的角度比较 C++、Go、Rust 这三种语言。
WireGuard 仍然是一个实验性的新产品,目前只有 Linux 和安卓客户端。
从一个失败的正则表达式解释正则引擎的运行原理。
本文使用鸽子传信作为比喻,解释 HTTPS 协议。
Debian 是历史最悠久、使用最广泛的 Linux 发行版之一。今年8月16日是它25周年的生日,本文介绍一些它的小知识。
本文介绍了 Java 语言用在后端开发的一些优势。
为什么 Power Assert 是更好的断言库?
作者给出了各门课程的参考书单和学习资源,以及一些建议。
臃肿肥胖的网页会消耗更多能源,释放更多二氧化碳。为了保护地球,我们应该制作简单节能的网页,作者演示了如何制作一个只有 7KB 的 Wordpress 网站。
本文介绍如何用 Go 语言实现一个最简单的反向代理服务器。
作者从用户角度,对谷歌云服务的各个方面进行了评价。
你有没有遇到,照片在手机里面方向正确,上传到网站却左右颠倒或上下颠倒?这篇文章告诉你为什么。
Unicode 里面有一些不存在的汉字,称为"幽灵文字"。它们是怎么进入标准的?原来,1978年,日本制定本国编码标准 JIS 时有一些错误,创造出这些文字,后来 Unicode 又全部继承了 JIS。
继内容安全政策之后,现在又多了一个新的 HTTP 头字段 Feature-Policy,用来禁止网页执行某些功能。
Android 9.0 就是早先推出 Beta 版的 Android P。现在我们知道,P 代表的甜点就是派(Pie)。
HTTPS 协议的最新版本 TLS 1.3,最近成为了国际标准 RFC 8446。本文详细介绍这个新协议,包括 TLS 1.2 的缺陷,以及 TLS 1.3 如何解决它。
本文教你使用 JS 的 imagemin 模块,压缩图片的大小。
DNS 查询都是基于 HTTP 协议的,即使是加密通信,网络服务商依然可以知道你想访问的网站。现在有多种解决方案,本文介绍如何在 Firefox 浏览器打开设置,使得 DNS 协议走 HTTPS 协议。
WebAssembly 是浏览器可以执行的字节码,使得非 JS 编写的程序可以在浏览器运行。它现在的功能非常少,还处在 MVP(最小可用产品)状态。这篇文章介绍了一些很可能采纳的 WebAssembly 提案。
全世界发达国家都有少子化和人口老龄化的趋势,这篇文章是我看过的最好的这方面的综述,有大量的数据和事实。除了非洲,其他大洲的人口都接近峰值了,将要开始下降,这意味着许多国家将不得不依靠移民,解决本国人力不足问题。
本文手把手教你如何写一个最简单的 SVG 动画。
Hash 算法的概念性介绍。
现在的飞机驾驶舱还是使用物理仪表盘,而不是触摸屏,这是为什么?主要的原因还是物理按钮会形成肌肉记忆,比操作触摸屏更快。
如果不用递归,直接算出斐波那契数列的任意项,应该怎么计算?
本文讲述了作者通过 npm 发布恶意代码的种种手段,非常值得一读。其中有一个技巧,就是package.js 与 package.min.js 的代码不同,恶意代码只放在后者。
图(graph)是一种数据结构,由点(vertex)和边(edge)组成。本文介绍图结构的算法基本知识。
这种问题恐怕要熟悉欧洲艺术的专家才能回答。现在,有人写了一个神经网络教程,介绍如何用算法判断油画的年代。
这篇文章教你如何手写一个 SVG 文件,作为网页的背景图案。
全球气候正在变暖,这到底是怎么一回事,原因是什么。本文是我读过最好的这方面的入门读物。
大型 Web 应用最关键的就是架构,最难的也是架构。这份教程整理了这方面需要知道的知识。
Webpack 是 JS 代码的打包器,现在前端开发的主流工具。Webpack 4 是它的最新版本。
SSH 的作者回忆, ftp 端口是21,telnet 的端口是23,他就挑了中间剩下的22。
作者认为应该避免使用 PDF 格式。一般情况下,HTML 格式是更好的选择。如果要求保证精确的打印效果,可以使用压缩的 Postscript 格式。
这篇文章解释,为什么以后发布应用的时候,不是直接发布在服务器上,而是通过 Kubernetes 发布。
一篇很好的初级 Python 教程,教你用最基本的语法,算出平均数和标准差。
有人把 WordPress 编译成了 .Net 代码,运行的时候只需要 .Net 环境,不需要 PHP 了。随着转码器的流行,以后这种事情可能越来越多。你用什么语言可能根本无所谓了,反正都可以转来转去。
为什么是 192.168.1.1 这个地址,而不是别的地址被指定为内网 IP?
Kubernetes 是现在最流行的容器集群管理工具,本文给出了一份上手教程,教大家怎么安装和使用它。
dd 命令通常用来克隆整块磁盘,或者制作 Linux 系统的 USB 启动盘。这篇文章教你怎么用,其实很简单。
Webpack 是现在最流行的模块打包器,可以将脚本依赖打包成一个文件。这到底是怎么实现的?如果自己写一个打包器,应该怎么写?
介绍 Chrome 开发者工具各个部分的用法。
介绍 MacOS 内核的历史演变,跟 Linux 的差异还是很大的。
WAF 是应用程序级别的防火墙,目前主要用在 Web 服务器软件。这篇文章简单介绍了 WAF 的概念。
一份很好的数据结构教程,图文并茂,简明扼要,列出每种结构的定义和优缺点,非常适合初学者。
*Go 101 *是一本介绍 Go 语言的语法和各种细节的开源电子书,帮助读者深入彻底地了解 Go。
向初学者介绍逆向工程的知识。
一份简单的教程,如何获得局域网路由器的 root 权限。
Python 的默认排序算法是 Timsort,它的表现据说好于快排(quicksort)。本文解释了这种算法的基本原理。
闲鱼是国内最早使用 Flutter 的 App 之一,这个系列的文章是他们对 Flutter 的使用总结。
Chrome 可以启用"show saved copy" 按钮。如果网站下线,而本地又有以前访问时的缓存,就能看到缓存的版本。
一篇比较简单的微服务架构的解释。
静态网站可以免费托管在很多地方,现在又多了一个选择:谷歌的云服务。这篇文章教你怎么做。
现在的跨平台App开发工具分成两类:(1)容器包了Web View,App实际是一个本地网站;(2)原生控件的跨平台抽象。Flutter走了不一样的路:自己开发了一套原生控件,每个平台实现一遍,然后把渲染引擎(这套控件)打包在每个应用里面,因此性能没有问题,平台差异也很小。
本文回顾了 Python 类型系统的现状,对它的优缺点进行了评价。
为什么 SQL Server 的日期从1753年1月1日开始?
原因是1752年英格兰进行了日历改革,由于日历算法的差异,导致丢失了9月3日到9月13日的一共12天。为了避免计算天数的误差,SQL Server 就索性把最小日期定为1753年1月1日,更大的日期范围由 datetime2 类型提供。
集成开发环境(IDE)作为文件结构、代码编写、代码维护、测试和排错工具于一体的应用程序,对程序员们非常有价值。这个教程展示如何用 Unix 命令行工具完成 IDE 的功能。
这里还有一篇文章,展示了两个用 Go 语言写的 WebAssebmly demo。
本地开发时,我们常常使用 localhost 访问本地服务,怎样才能生成证书,让 localhost 提供 https 服务呢?
Unicode 字符用作 CSS 背景,可以产生一些非常独特的背景。此文还有续篇。
一篇很有意思的文章,讨论如果不使用 if ... else 语句,应该怎么写代码。他的意思是,某些情况下 if 属于误用,会造成代码冗余或不利于阅读,这时应该减少 if 的使用。
4月8日,清明节后第一个工作日,腾讯云一个重要的棋牌游戏客户突然遭受大流量 DDoS 攻击,棋牌类游戏遭受攻击习以为常,但是本轮攻击流量峰值竟达到了1.23Tbps,刷新国内DDoS攻击最大流量记录。
devops 是 IT 行业的一个新兴领域,这一类工程师的职务应该怎么分类呢?这篇文章认为可以分成三种职务:运维(Operations)、平台工程(Platform Engineering)、发布管理(Release Management)。
MySQL 数据库的字符集,要用 utf8mb4,而不是 utf8
MySQL 的 utf8 字符集不是真正的 UTF-8,只支持最多三个字节的字符。真正的 UTF-8 可能会出现四个字节的字符。MySQL 从来没有修复这个 Bug,而是使用另外的解决方法:真正的 UTF-8字符集改用 utf8mb4 的名字提供。.
UV、PV、跳出率(bounce rate)这些词到底是什么意思?怎么计算?
这篇文章写于2014年,回顾了互联网开发技术的历史。客户端的部分看不看无所谓,服务器的部分写得很好。
socks 是一种服务器的通信代理协议,本文介绍它的一些基本知识。
Flutter 是谷歌推出的跨平台App开发工具。只要写一次代码,就能同时编译出安卓和iOS两个平台的App。这篇是一个 iOS 开发者的试用报告,他说他对 Flutter 感到非常满意。
Channel 是 Web Socket 协议的封装,提供服务器、PC端、手机端的库,做到客户端订阅服务器事件,或者服务器订阅客户端事件。
Rust 是一种静态的编译型语言,实现了C 或 C++ 大部分的功能。但是不同于 C 和 C++,Rust 还可以进入 C# 和 Java 长时间统治的领域:自动内存管理。Rust 语言既有低级语言的速度优势,同时又不用手动管理内存,还不存在麻烦的垃圾收集机制。
WebAssembly 并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出字节码放到 WebAssembly 虚拟机中才能运行, 浏览器厂商需要做的就是根据 WebAssembly 规范实现虚拟机。本文重点介绍如何使用 AssemblyScript 来编写 WebAssembly。
不要用 git push --force,而要用 git push --force-with-lease 代替。在你上次提交之后,只要其他人往该分支提交给代码,git push --force-with-lease 会拒绝覆盖。
这篇文章讨论了为什么程序员更喜欢使用命令行,而不是图形界面。
它是一个分布式网络,采用点对点通信。内部是一个区块链,文件写入以后就没法删除了,然后通过哈希可以读出文件。缺点是本地需要架设一个客户端,资源开销有点大。
Puppeteer 是谷歌推出的 Chrome 无头浏览器,是目前的浏览器自动化首选工具。本文介绍了作者的使用经验。
这篇教程详细介绍一种手写识别算法,并且附有多个可视化示例可以操作。这篇的英语看起来有点费劲,但是耐心看一定可以看懂,因为解释得很好,也没有复杂的数学。
苹果手表的最新系统 WatchOS5,可以在手表上浏览网页。WWDC 2018 放出一段8分钟视频,介绍网页如何适配苹果手表,还算挺简单的。
这篇文章介绍什么是 GPU,为什么不用 CPU 进行图形渲染,GPU 的基本概念等等。
Python 的数据类型: list 与 tuple 的区别
转动的电风扇 动态火焰效果
如何使用 AWS LAMBDA 做一个 YOUTUBE MP3 下载器
作者做了一个 Bookmarklet。浏览 Youtube 的时候,只要按一下这个书签工具,就会把请求发到 AWS LAMBDA,然后抓取 Youtube 流文件,转码成 mp3 文后以后存到 S3,再返回下载地址。
这篇文章针对初学者,介绍 Array、HashMaps、Sets、Linked Lists、Stacks、Queues 这六种数据结构的 JavaScript 实现。
tcpdump 是一个 Linux 命令行工具,用来查看 TCP 通信。
Eloquent JavaScript 3rd edition 中文版
一本开源的 JavaScript 语言的入门教材。
有人根据历史数据,写了一个脚本,预测本届世界杯的所有比赛(见上图)。四强是葡萄牙、阿根廷、巴西、德国,决赛是巴西对德国,冠军是德国。链接是完整的脚本和数据集下载。不过,世界杯已经开始了,跟真实结果一比较,似乎出入比较大,这届的强队都表现一般。
你还是使用 PhotoShop 处理照片吗?可以考虑试试看 MATLAB。
Testcafe 是一个 UI 测试框架,可以在各大浏览器进行 UI 测试。相比 Puppeteer,它提供各种专门针对测试的封装好的方法。
本文介绍数码相机 CMOS 芯片的感光原理,彩色的光线是如何变成数字信号的。
一个帮助玩家学习人工智能的游戏。你扮演一个人工智能专家,在游戏的引导下解决各种问题。
初学者在 Linux 上安装比特币完整节点指南(2018年版)
这篇文章教你如何在没有任何 Linux 经验的情况下,全新安装Kubuntu 18.04系统,并在这个系统安装比特币完整节点,加入比特币网络。
志愿者从 Youtube 搬到 B 站的40集视频教程。
Ruby China 论坛的精华贴整理。
这里有一篇论文,给出相关系数的十三种解释,但都写得不太容易理解。后来,我又读到了标题里面的那篇论文,指出相关系数就是两个矢量的余弦相似性,所以完全相关是+1或-1,完全不相关是0,一下子就看懂了。
2013年的时候,Docker 团队介绍他们为什么使用 Go 语言写 Docker。
一组三个部分的系列文章,介绍如何从零开始写一个 Markdown 解析器。作者是用 Ruby 语言实现,但是一些基本知识的介绍跟语言无关,写得挺好的。
深度学习是目前很热名的主题,各大网校都有这方面的课程。这篇文章比较了美国三大教育平台的深度学习课程:Coursera、Udemy 和 Udacity。
作者使用 TensorFlow.js,让程序自动完成 Chrome 浏览器的内置小游戏"恐龙快跑"。
哈佛大学游戏开发课程 CS50,提供讲课视频、课程笔记、PPT 和作业等资料。
如何利用马尔可夫链建立一个决策模型,文章较好懂。
awk 是 Unix 命令行处理文本的有用工具,这里是1988年出版的 awk 教程。Unix 命令行高度稳定,所以这本教材也没那么过时。
这个仓库收集了30多种算法的 JavaScript 实现。
矩阵乘法需要计算每一行与所有列的乘积之和,如果矩阵很大,乘法计算是非常耗时的。这篇文章讨论如何实现一个高性能的矩阵乘法算法。
一本针对初学者的 Python 教程。
该网站每天列出5~10篇当天值得阅读的软件文章。
《Facebook 机器学习指南》是由 Facebook 广告机器学习团队开发的六部分的视频系列。该系列分享了最好的现实世界实践,并提供了如何将机器学习功能应用于实际问题的实用技巧。
气压就是大气的压力,一个标准大气压等于760毫米汞柱。有的地方气压高,有的地方气压低,这是风形成的根本原因,台风就是巨大的热带低气压。地球上,赤道由于高温蒸发是低压区,极地由于冷空气下降是高压区,这就形成了地球的风带。
Flask 是 Python 的 Web 开发框架。这个教程教你如何用 Python 和 Flask 来创建 Web 应用。
各种语言最受欢迎的项目,按照 GitHub Star 的数量排行。
Bash 脚本的语法远比编程语言宽松,你很容易写出难以阅读、风格混乱的脚本,可以参考谷歌如何写 Bash 脚本。
本文统计了30个最常见的 HTTP 头信息,逐个讨论哪些是必要的,哪些是没必要的。
一种是使用 text-shadow 属性复制表头,另一个使用 element 方法复制表头。但是,这两种方法都有局限,前者是单元格里不能有换行,后者是只有 Firefox 支持。
什么是分布式系统?最简单的定义,分布式系统是一组计算机一起工作,对于最终用户只显示为一台计算机。这些机器具有共享状态,可以处理并发操作,如果其中一台机器发生故障,不会影响整个系统的正常运行。
一张网页的《C 语言的入门教程》,比较注重内存部分的讲解。写得不是很易读,但是还是可以看一下。
本文介绍了17个据说改变了世界的数学公式。数了一下,我知道9个。
代码还算简单,可以作为编译器的训练。
Everything old is new again: Microservices
这篇短文讨论了 SOA 架构(服务导向架构)和微服务架构的差异,为什么 SOA 会演变成微服务。
我们经常听到 DNS 根域名服务有 13 台,那么是为什么呢? 今天我们来深入了解下。
Linux: a Portable Operating System
这是 Linus Torvalds 的硕士毕业论文,介绍 Linux 系统如何适配不同的硬件架构。这篇论文不涉及代码,只介绍一些概念性的东西,但也不是那么好懂,至少我没有完全看懂。对内核和操作系统感兴趣的朋友,可以读一下。
ed 是 Unix 系统里面最古老的命令行编辑器,但是功能并不弱。这篇文章介绍了一个使用 ed 的简单实例。
通过吃豆子(PacMan)游戏学习 Vim 操作的命令行游戏。
一个通俗的实例是,每天有"晴天"和"下雨"两种天气,天气变化的概率是50%,那么马尔可夫链就可以生成一个未来一周天气的模型。
决策树模型(Decision Tree)是最简单的机器学习模型,也最容易理解。当决策受到多个因素影响时,这个模型相当有用。
多线程编程之中,有一种 go 结构,就是主线程之外分出一个线程,这个线程完成任务以后,再回到主线程。作者认为,这种结构是有害的。他的最精彩观点就是:如果允许使用 go 结构,那么所有的语言功能都可以用这种结构实现,程序很快就会乱做一团。
这个项目展示了另一种开发桌面应用的可能。它的原理是,任何操作系统都有自己的 WebView,也就是说可以在应用程序里面调用 WebView 展示网页。那么可以使用 Rust 语言打包 WebView,而 JS 脚本部分交给 Elm 语言生成。由于 WebView 是系统提供的,所以打包出来非常小,一般只有几百KB,资源占用也很少。
Netflix 公司的工程师介绍,他们如何部署代码,提高服务的可用性,比如使用红黑部署、设置部署窗口等等。
1xx 编号的课程都是本科生的基础课程,我看了一下,讲的是 Python、基础的统计学知识和数学模型,提供免费的课程视频和PPT 下载。
技术面试需要掌握的基础知识整理。
作者收集的国内各大互联网公司技术架构的资料
现在,各大云服务商都支持 Node.js 主机,本文对比了最大的 6 家服务商各自的优缺点。
本文讨论了13种软件测试的错误做法,比如:(1)单元测试与集成测试的比例不正确;(2)太相信 TDD(即写代码之前就写测试);(3)写了大量很慢的测试;(4)手动运行测试;(5)没有把生产环境的错误写成测试等等。
React 如何使用各种编程模式?
本文集中介绍 Rust 最重要的核心特性:内存管理。这是 Rust 的主要创新之一,它的许多独特的特点是基于此的。本文写给不知道 Rust 或刚刚开始学习它的程序员的。对于熟悉 C、C++ 或其他使用手动管理内存以及使用垃圾回收器语言的读者来说会更容易理解 Rust 的特点。
SHA256 是目前常用哈希算法里面最可靠的,Git 和比特币都依赖这种算法。本文解释了它的实现。
列表(list)是最基本的数据结构,这篇文章通过实例讲解 Python 如何操作列表。很容易读,就是内容比较浅,只适合刚刚开始学 Python 的初学者。
收集各种算法的代码实现的仓库。
HTML 5.2 新增了 < dialog> 元素,这个元素将来一定会广泛使用,因为它提供了浏览器原生 Modal 窗口。
Active Record 与 Data Mapper 的差异
关系型数据库的操作通常采用 ORM 库,将表格转换成对象。ORM 主要分成两种类型:Active Record 与 Data Mapper。本文讨论这两种模型的差异和适用场景。
本书是加州大学伯克利分校《数据科学导论》课程的教材,现在开源了。
每周给你发送一封邮件,介绍本周值得关注的 WebAssembly 消息。
Optimizing React: Virtual DOM explained
React 的虚拟 DOM 机制的详细解释, JSX 代码如何变成虚拟 DOM 的数据结构。
从零基础开始,到Canvas API,再到基本动画与高级动画的实现,还会介绍视音频的处理、移动应用,最后如果有时间会扩展说一说3D、多人应用、游戏制作等。
上个月底发布的 Node 10 支持异步遍历器,对 Stream 操作有重大影响。这篇文章介绍了如何用这个新语法读取文件内容,写法变得很自然。
Rust 语言入门教程
图理论(graph theory)是重要的数学分支,在数据处理领域有着重要应用。这个教程采用可视化库 D3,把图理论变成了可视化互动教程。
回归(regression)是数据处理的常用技术,用来找出数据的模式。本文介绍数据回归的15种拟合。
很多开放课程的仓库放在 GitHub 上面,GItHub 官方列出了最受欢迎的20个仓库。
Probability Theory (For Scientists and Engineers)
一个概率论的概览性介绍,每个章节后面有一个 R 语言的小例子。
可视化引擎 D3 的教程。
Uber 架构师分享在搭建分布式支付系统过程中,遇到的最重要的几个概念:SLA、scaling、Consistency、Durability、Idempotency等。
我写这本书,就是为了弥补计算机业界这一空缺,改变行业的现状。它将吸引新鲜干净的血液进入这个行业,并且赋予他们力量。它也可以刷新内行人员的头脑,让他们重新理解和审视已有的知识。这样也许我们能冲破这个行业的重重迷雾,让它变得诚实,获得科学的精神,成为像物理一样踏实的学科。 很多计算机书籍都喜欢从"数学基础"开始,一开头就是长篇累牍的数学公式,定理,证明...... 结果读者还没读完数学基础就倒下睡着了,再也不想打开这本书。所以我不从数学基础开始,而是从最简单的生活常识。在认识发展的过程中,你会自己去创造出所需要的那些数学。(摘自《序言》)
他的新书《Machine Learning Yearning》现在可以免费订阅。今后几个月里面,他每完成一个部分,你就会得到邮件通知,可以立即读到。根据说明,这本书大概100页左右,每章的长度很短,非常容易阅读。内容主要关于如何实现你自己的机器学习项目,重点不是算法,而是如何运用算法到真实项目。
第一部分:Python 数据处理 第二部分:抽样推断 第三部分:预测与机器学习
Programming Blockchains Step-by-Step
介绍如何使用 Ruby 语言从零开始写一个区块链实现,代码非常好懂,并有各种基础概念的解释。
Low Level Bit Hacks You Absolutely Must Know
位运算(bit operation)的用途,有很多例子。
React - Basic Theoretical Concepts
React 官方关于 React 原始设计思想的解释。
一份爱好者整理的 Google 面试准备指南。
Color: From Hexcodes to Eyeballs
人眼如何感受到色彩,读懂这篇文章需要一点物理学知识。