疑难杂症

FFmpeg 视频处理入门教程

FFmpeg 视频处理入门教程

FFmpeg 是视频处理最常用的开源软件。 它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。 FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具。本文介绍 FFmpeg 命令行如何处理视频,比桌面视频处理软件更简洁高效。 如果你还没安装,可以根据官方文档 先完成安装。 一、概念 ... »

远程调试 Android 设备网页

远程调试 Android 设备网页

本文介绍如何进行远程调试。打开电脑的 Chrome 浏览器,进入”开发者工具”。点击右上角三个点,进入设置菜单,打开”更多工具 / 远程设备”窗口。选中 “Discover USB devices” 选项。Step 3:调试网页安卓手机里面,打开 Chrome 浏览器。这时,桌面电脑的开发者工具应该会同步显示所有已经打开的 Tab 页。这时,就会弹出一个独立的调试窗口。参考链接Debugging ... »

Page Lifecycle API 教程

Page Lifecycle API 教程

两周前,我介绍了 Page Visibility API。有了它,就可以监听各种情况的网页卸载。 但是,它没有解决一个问题。Android、iOS 和最新的 Windows 系统可以随时自主地停止后台进程,及时释放系统资源。也就是说,网页可能随时被系统丢弃掉。Page Visibility API 只在网页对用户不可见时触发,至于网页会不会被系统丢弃掉,它就无能为力了。 为了解决这个问题,W3C ... »

持续集成服务 Travis CI 教程

持续集成服务 Travis CI 教程

编写代码只是软件开发的一小部分,更多的时间往往花在构建(build)和测试(test)。 为了提高软件开发的效率,构建和测试的自动化工具层出不穷。Travis CI 就是这类工具之中,市场份额最大的一个。 本文介绍 Travis CI 的基本用法。用好这个工具不仅可以提高效率,还能使开发流程更可靠和专业化,从而提高软件的价值。而且,它对于开源项目是免费的,不花一分钱,就能帮你做掉很多事情。 一、什... »

为什么文件名要小写?

为什么文件名要小写?

上周,《中文技术文档写作规范》加入了文件的命名规则。 “文件名建议只使用小写字母,不使用大写字母。” “为了醒目,某些说明文件的文件名,可以使用大写字母,比如README、LICENSE。” 网友看见了,就提问为什么文件名要小写? 说实话,虽然这是 Linux 传统,我却从没认真想过原因。赶紧查资料,结果发现四个很有说服力的理由,支持这样做。 下面就... »

常用 Git 命令清单

常用 Git 命令清单

我每天使用 Git ,但是很多命令记不住。 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一、新建代码库 # 在当前目录新建一个Git代码库 $ git ... »

Linux服务器的初步配置流程

Linux服务器的初步配置流程

开发网站的时候,常常需要自己配置Linux服务器。 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情。这主要是我自己的总结和备忘,如果有遗漏,欢迎大家补充。 下面的操作针对Debian/Ubuntu系统,其他Linux系统也类似,就是部分命令稍有不同。 第一步:root用户登录 首先,使用root用户登录远程主机(假定IP地址是128.199.209.242)。 ss... »

学习C语言的教材

学习C语言的教材

我认为,这是C语言的首选入门教材。但是,它不是写给初学者看的,更偏重C语言的编程技巧和算法思维。《零基础学C语言》,康莉等著,机械工业出版社,2009。我现在的C语言,到了这样一个水平:语法已经基本掌握了,可以独立开发一些小程序。下一步,我想进一步提高C语言水平,主要用于Linux开发。大家能不能推荐一些C语言的中级教材? »

全文Feed的终极解决方案

全文Feed的终极解决方案

正如我们都知道的,全文Feed最有用。 但是,世界上的大部分Feed,都是摘要Feed,甚至是标题Feed。我们只好自己动手,制作全文Feed。 传统的制作方法非常麻烦,需要针对不同的网站,编写不同的内容提取规则。要是有一个傻瓜型的”全文Feed生成器”,把摘要Feed往里面一扔,全文Feed就自动生成了,那该多好。 FiveFilters.org提供的生成器,大概最接近于... »

bg50331b.jpg

比尔·盖茨和理查德·斯托曼

比尔·盖茨,微软公司的创始人,软件版权制度的受益者,世界头号富翁。 理查德·斯托曼,自由软件基金会的创始人,自由软件运动的领袖。 他们两个人,一个疾呼保护版权,打击盗版;另一个提倡自由复制,源码共享。他们是软件世界的两极,针锋相对,一个代表金钱,另一个代表自由。 但是,他们的人生又是如此相似。两人都是程序员,年龄相仿,都在大城市出生和长大,都进了哈佛大学。到底是什么原因,使他们选择了不同的信念,走... »

Bash 脚本如何创建临时文件:mktemp 命令和 trap 命令教程

Bash 脚本如何创建临时文件:mktemp 命令和 trap 命令教程

有时,Bash 脚本需要创建临时文件或临时目录。 常见的做法是,自己在/tmp目录里面生成一个文件,这样做有很多弊端。本文介绍如何安全地处理临时文件。 一、临时文件的安全问题 直接创建临时文件,尤其在/tmp目录里面,往往会导致安全问题。 首先,/tmp目录是所有人可读写的,任何用户都可以往该目录里面写文件。创建的临时文件也是所有人可读的。 $ touch /tmp/info.txt $ ls -... »

为什么开源数据库改变许可证?

为什么开源数据库改变许可证?

CockroachDB 是一个开源的分布式数据库,最近改变了代码授权,放弃了 Apache 许可证。 许多开源数据库这一两年都改变了授权,比如 Confluent、Elastic 、MongoDB、Redis Labs、TimescaleDB。本文分析这种现象。 一、CockroachDB 的许可证变更 CockroachDB 以前的许可证是 Apache,代码托管在 GitHub,任何人都可以访... »

Page Visibility API 教程

Page Visibility API 教程

一、简介 有时候,开发者需要知道,用户正在离开页面。常用的方法是监听下面三个事件。 pagehide beforeunload unload 但是,这些事件在手机上可能不会触发,页面就直接关闭了。因为手机系统可以将一个进程直接转入后台,然后杀死。 用户点击了一条系统通知,切换到另一个 App。 用户进入任务切换窗口,切换到另一个 App。 用户点击了 Home 按钮,切换回主屏幕。 操作系统自动切... »

Bash 脚本 set 命令教程

Bash 脚本 set 命令教程

服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。 set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 一、简介 我们知道,Bash 执行脚本的时候,会创建一个新的 Shell。 $ bash script.sh 上面代码中,script.sh是在一个新的 Shell 里面执行。这个... »

中文技术文档的写作规范

中文技术文档的写作规范

很多人说,不知道怎么写文档,都是凭着感觉写。 网上也很少有资料,教你写文档。这已经影响了中文软件的发展。 英语世界里,文档非常受重视,许多公司和组织都有自己的文档规范,清楚地规定写作要求,比如微软、MailChimp、Apple、Yahoo、docker、Struts 等等(维基百科有一份完整的清单)。中文的也有不少,但都不令人满意,要么太简单,要么不太适用。 我就动手,参考上面的规范,也结合自己... »

Github 的清点对象算法

Github 的清点对象算法

使用 Github 的时候,你有没有见过下面的提示? $ git clone https://github.com/torvalds/linux Cloning into 'linux'... remote: Counting objects: 4350078, done. remote: Compressing objects: 100% (4677/4677), done. Receiving... »

CSS动画简介

CSS动画简介

现在,我很少写介绍CSS的文章,因为感觉网站开发的关键还是在服务器端。 但是,CSS动画除外,它实在太有用了。 本文介绍CSS动画的两大组成部分:transition和animation。我不打算给出每一条属性的详尽介绍,那样可以写一本书。这篇文章只是一个简介,帮助初学者了解全貌,同时又是一个快速指南,当你想不起某一个用法的时候,能够快速地找到提示。 我的主要参考资料是,2013年10月,Lea ... »

Java开源建站工具

Java开源建站工具

在目前的创业者之中,用Java作为网站开发语言的人似乎很少。这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事。另外,Google App Engine平台提供免费的Java主机,所以使用Java建站也不失为一种合理的选择。如果有一天,我也用Java建站,就可以参考了。 »

制作CSS气泡框

制作CSS气泡框

气泡状文本框,是一种很生动的网页设计手段。 它可以用来表示用户的发言。 也可以用来作为特定信息的提示符。 DVD租借网站Netflix,还用它显示碟片的详细信息。 ========================= 制作CSS气泡框的传统方法,需要5张背景图片,分别是:   * tl.gif,左上方的圆角。   * tr.gif,右上方的圆角。   * bl.gif,左下方的圆角。   * br.... »

地图

Prolog 语言入门教程

Prolog 是一种与众不同的语言,不用来开发软件,专门解决逻辑问题。比如,”苏格拉底是人,人都会死,所以苏格拉底会死”这一类的问题。 Prolog 就是”逻辑编程”(programming of Logic)的意思。只要给出事实和规则,它会自动分析其中的逻辑关系,然后允许用户通过查询,完成复杂的逻辑运算。 本文简单介绍如何使用 Prolog 语言,... »

如何撤销 Git 操作?

如何撤销 Git 操作?

Git 版本管理时,往往需要撤销某些操作。 本文介绍几种最主要的情况,给出详细的解释。更多的命令可以参考《常用 Git 命令清单》一文。 一、撤销提交 一种常见的场景是,提交代码以后,你突然意识到这个提交有问题,应该撤销掉,这时执行下面的命令就可以了。 $ git revert HEAD 上面命令的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首... »

HTTP Referer 教程

HTTP Referer 教程

HTTP 请求的头信息里面,Referer 是一个常见字段,提供访问来源的信息。 很多开发者知道这个字段,但是说不清它的具体细节。本文详细介绍该字段。 一、Referer 的含义 现实生活中,购买服务或加入会员的时候,往往要求提供信息:”你从哪里知道了我们?” 这叫做引荐人(referrer),谁引荐了你?对于公司来说,这是很有用的信息。 互联网也是一样,你不会无缘无故访问... »

Flexbox 布局的最简单表单

Flexbox 布局的最简单表单

弹性布局逐渐流行,越来越多人使用,因为它写 CSS 布局真是太方便了。三年前,我写过 Flexbox 的介绍(上,下),但是有些地方写得不清楚。今天,我看到一篇教程,才意识到一个最简单的表单,就可以解释 Flexbox,而且内容还很实用。flex-grow属性默认等于0,即使用本来的宽度,不拉伸。 »

Docker 微服务教程

Docker 微服务教程

Docker 是一个容器工具,提供虚拟环境。很多人认为,它改变了我们对软件的认识。 站在 Docker 的角度,软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器……Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。 这正是微服务(microservices)的思想:软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务... »

亚马逊如何变成 SOA(面向服务的架构)?

亚马逊如何变成 SOA(面向服务的架构)?

上一篇文章,我摘录了《程序员的呐喊》。这本书有趣的内容太多,今天再摘录一段。 1、 亚马逊公司不仅是世界最大的网络书店,还是世界最大的云服务商。它是怎么实现从电商到云商的转变呢? 一切都是CEO杰夫·贝索斯促成的,他对市场有着超乎常人的理解和预见。 2、 2000年前后,贝索斯有一次在员工大会上提到,各种办公工具、书籍、影音制品都可以数字化,所以也意味着很容易盗版。数字产品可能会利润越来越低,很快... »

Page 1 of 7123»