软件开发

Linux 与 Windows 的设备驱动模型对比:架构、API 和开发环境比较

Linux 与 Windows 的设备驱动模型对比:架构、API 和开发环境比较

了解这些差异以及每个系统的具体情况是为您的设备提供有效的驱动程序开发和支持的关键的第一步。我们希望这篇文章对 Windows 和 Linux 设备驱动程序开发做的对比,有助于您理解它们,并在设备驱动程序开发过程的研究中,将此作为一个伟大的起点。
构建你的数据科学作品集:机器学习项目

构建你的数据科学作品集:机器学习项目

数据科学公司在决定雇佣时越来越关注你在数据科学方面的作品集。这其中的一个原因是,这样的作品集是判断某人的实际技能的最好的方法。好消息是构建这样的作品集完全要看你自己。只要你在这方面付出了努力,你一定可以取得让这些公司钦佩的作品集。
制作你的第一个 Atom 文本编辑器插件

制作你的第一个 Atom 文本编辑器插件

我们将会制作一个山寨版的 Sourcerer,这是一个从 StackOverflow 查询并使用代码片段的插件。到教程结束时,你将会制作好一个将编程问题(用英语描述的)转换成获取自 StackOverflow 的代码片段的插件
内容安全策略(CSP),防御 XSS 攻击的好助手

内容安全策略(CSP),防御 XSS 攻击的好助手

CSP 对你的用户来说是尤其重要的:他们在你的网站上不再需要遭受任何的未经请求的脚本,内容或 XSS 的威胁了。对于网站维护者来说 CSP 最重要的优势就是可感知。如果你对图片来源设置了严格的规则,这时一个脚本小子尝试在你的网站上插入一张未授权来源的图片,那么这张图片就会被禁止,并且你会在第一时间收到提醒。
搭个 Web 服务器(三)

搭个 Web 服务器(三)

“你该如何让你的服务器在同一时间处理多个请求呢?”在这篇文章中,你会找到答案。系好安全带,我们要认真起来,全速前进了!
如何运用 Python 建立你的第一个 Slack 聊天机器人?

如何运用 Python 建立你的第一个 Slack 聊天机器人?

聊天机器人(Bot) 是一种像 Slack 一样的实用的互动聊天服务方式。如果你之前从来没有建立过聊天机器人,那么这篇文章提供了一个简单的入门指南,告诉你如何用 Python 结合 Slack API 建立你第一个聊天机器人。
零配置部署 React

零配置部署 React

你想使用 React 来构建应用吗?“入门”是很容易的,可是接下来呢?
Instagram 基于 Python 语言的 Web Service 效率提升之道

Instagram 基于 Python 语言的 Web Service 效率提升之道

在过去的六个月,我们已经能够做到无需向我们的 Django 层(Django tiers)添加新的容量来维持我们的用户增长。我们将在本文分享一些由我们构建的工具以及如何使用它们来优化我们的日常部署流程。
Ohm:用两百行 JavaScript 创造你自己的编程语言

Ohm:用两百行 JavaScript 创造你自己的编程语言

我们将探索一种叫做 Ohm 的新的开源库,它使得搭建解析器很简单并且易于重用。在这个系列里,我们使用 Ohm 去识别数字,构建一个计算器等等。在这个系列的最后你将已经用不到 200 行的代码发明了一种完整的编程语言。这个强大的工具将让你能够做到一些你可能过去认为不可能的事情。
使用 Python 和 Asyncio 编写在线多人游戏(三)

使用 Python 和 Asyncio 编写在线多人游戏(三)

说实话,我十分享受 Python 最新的异步特性。新的语法做了改善,所以异步代码很容易阅读。可以明显看出哪些调用是非阻塞的,什么时候发生 greenthread 的切换。所以现在我可以宣称 Python 是异步编程的好工具。
使用 Python 和 Asyncio 编写在线多用人游戏(二)

使用 Python 和 Asyncio 编写在线多用人游戏(二)

游戏循环是每一个游戏的核心。它持续地运行以读取玩家的输入、更新游戏的状态,并且在屏幕上渲染游戏结果。在在线游戏中,游戏循环分为客户端和服务端两部分,所以一般有两个循环通过网络通信。
使用 Python 和 Asyncio 编写在线多人游戏(一)

使用 Python 和 Asyncio 编写在线多人游戏(一)

最近版本的 Python 对 asyncio 的引入和一个特别的 async/await 语法使得异步代码看起来像常规的阻塞代码一样,这使得 Python 成为了一个值得信赖的异步编程语言,所以我将尝试利用这些新特点来创建一个多人在线游戏。
从零构建一个简单的 Python 框架

从零构建一个简单的 Python 框架

这篇文章旨在通过对设计和实现过程一步一步的阐述告诉读者,我在完成一个小型的服务器和框架之后学到了什么。
使用 Github Pages 发布你的项目文档

使用 Github Pages 发布你的项目文档

你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程。近期 Github Pages 的改进使得从不同的数据源来发布您的网站更加的方便,其中的来源之一就是你的仓库的 /docs 目录。
用 Python 实现 Python 解释器

用 Python 实现 Python 解释器

Byterun 是一个用 Python 实现的 Python 解释器。随着我对 Byterun 的开发,我惊喜地的发现,这个 Python 解释器的基础结构用 500 行代码就能实现。
MySQL 中你应该使用什么数据类型表示时间?

MySQL 中你应该使用什么数据类型表示时间?

当你需要保存日期时间数据时,一个问题来了:你应该使用 MySQL 中的什么类型?使用 MySQL 原生的 DATE 类型还是使用 INT 字段把日期和时间保存为一个纯数字呢?
Linux 平台下 Python 脚本编程入门(二)

Linux 平台下 Python 脚本编程入门(二)

我们讲解了 Python 中控制流、循环/迭代、和模块的概念。我们也演示了如何利用 Python 中面向对象编程的方法和属性来简化复杂的 shell 脚本。
GCC 内联汇编 HOWTO

GCC 内联汇编 HOWTO

本 HOWTO 文档将讲解 GCC 提供的内联汇编特性的用途和用法。对于阅读这篇文章,这里只有两个前提要求,很明显,就是 x86 汇编语言和 C 语言的基本认识。
搭个 Web 服务器(二)

搭个 Web 服务器(二)

你的 Web 服务器必须实现 WSGI 接口的服务器部分,而现代的 Python Web 框架均已实现了 WSGI 接口的框架部分,这使得你可以直接在 Web 服务器中使用任意框架,而不需要更改任何服务器代码,以对特定的 Web 框架实现兼容。
Python 高级图像处理

Python 高级图像处理

构建图像搜索引擎并不是一件容易的任务。这里有几个概念、工具、想法和技术需要实现。主要的图像处理概念之一是逆图像查询(reverse image querying :RIQ)
5 个最受人喜爱的开源 Django 包

5 个最受人喜爱的开源 Django 包

Django 具有一个丰富多样的、由可供你使用的可重用应用组建起来的生态系统——PyPI 列出了超过 8000个 Django 应用——可你该如何知道哪些是最好的呢?
Python 3: 加密简介

Python 3: 加密简介

Python 3 的标准库中没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto 和 cryptography 上。我们将学习如何使用这两个库,来加密和解密字符串。
Python 学习:urllib 简介

Python 学习:urllib 简介

Python 3 的 urllib 模块是一堆可以处理 URL 的组件集合。如果你有 Python 2 的知识,那么你就会注意到 Python 2 中有 urllib 和 urllib2 两个版本的模块。这些现在都是 Python 3 的 urllib 包的一部分。
搭个 Web 服务器(一)

搭个 Web 服务器(一)

在这个由三篇文章组成的系列中,我将会教你构建你自己的 Web 服务器。我们开始吧~
Git 系列(三):建立你的第一个 Git 仓库

Git 系列(三):建立你的第一个 Git 仓库

虽然 Git 确实是被许多重要软件选作版本控制工具,但是并不是仅能用于这些重要软件;它也能管理你购物清单(如果它们对你来说很重要的话,当然可以了!)、你的配置文件、周报或日记、项目进展日志、甚至源代码!
如何用 Python 和 Flask 建立部署一个 Facebook Messenger 机器人

如何用 Python 和 Flask 建立部署一个 Facebook Messenger 机器人

这是我建立一个简单的 Facebook Messenger 机器人的记录。功能很简单,它是一个回显机器人,只是打印回用户写了什么。 回显服务器类似于服务器的“Hello World”例子。 这个项目的目的不是建立最好的 Messenger 机器人,而是让你了解如何建立一个小型机器人和每个事物是如何整合起来的。
使用 OpenCV 识别图片中的猫咪

使用 OpenCV 识别图片中的猫咪

你知道 OpenCV 可以识别在图片中小猫的脸吗?而且是拿来就能用,不需要其它的库之类的。 之前我也不知道。
用 Python、 RabbitMQ 和 Nameko 实现微服务

用 Python、 RabbitMQ 和 Nameko 实现微服务

"微服务是一股新浪潮" - 现如今,将项目拆分成多个独立的、可扩展的服务是保障代码演变的最好选择。在 Python 的世界里,有个叫做 “Nameko” 的框架,它将微服务的实现变得简单并且强大。
Linux 内核里的数据结构——双向链表

Linux 内核里的数据结构——双向链表

我们将会首先从双向链表数据结构开始介绍内核里的数据结构。为什么?因为它在内核里使用的很广泛,你只需要在 free-electrons.com 检索一下就知道了。
用 Python 打造你的 Eclipse

用 Python 打造你的 Eclipse

Eclipse 高级脚本环境(EASE)项目虽然还在开发中,但是必须要承认它非常强大,它让我们可以快速打造自己的Eclipse 开发环境。
Node.js 4.0 中的 ES 6 特性介绍

Node.js 4.0 中的 ES 6 特性介绍

Node.js 4.0.0 已经发布了。这是和 io.js 合并之后的首个稳定版本,它带来了一系列的新特性,支持 ES 6的大部分特性。已经有很多 ES 6 的特性介绍了,这里我们介绍一下该怎么使用它们。 1. 模板字符串 如果你要在 JavaScript 中创建多行字符串,你可能会使用如下的语法: var message = .join(’\n’); 对于少量字符串这还算合适,但是如果比较多就会显得混乱。不过,有个聪明的开发者提出了一个叫multiline的技巧: var multiline = require(‘multiline’); var message = multiline(function () {/* The quick brown fox jumps over the l
史上最复杂的验证邮件地址的正则表达式

史上最复杂的验证邮件地址的正则表达式

用正则表达式验证邮件地址似乎是一件简单的事情,但是如果要完美的验证一个合规的邮件地址,其实也许很复杂。 邮件地址的规范来自于 RFC 5322。有一个网站 emailregex.com专门列出各种编程语言下的验证邮件地址的正则表达式,其中很多正则表达式都是我听说过而从未见过的复杂我想说,做这个网站的程序员是被邮件验证这件事伤害了多深啊! 其实,在产品环境中,一般来说并不需要这么复杂的正则表达式来做到99.99%正确。一般来说,从执行效率和测试覆盖率来说,只需要一个简单的版本即可: /^+@+.{2,4}$/i 那么下面我们来看看这些更严谨、
PHP 安全编程建议

PHP 安全编程建议

简介 要提供互联网服务,当你在开发代码的时候必须时刻保持安全意识。可能大部分 PHP 脚本都对安全问题都不在意,这很大程度上是因为有大量的无经验程序员在使用这门语言。但是,没有理由让你因为对你的代码的不确定性而导致不一致的安全策略。当你在服务器上放任何涉及到钱的东西时,就有可能会有人尝试破解它。创建一个论坛程序或者任何形式的购物车,被攻击的可能性就上升到了无穷大。 背景 为了确保你的 web 内容安全,这里有一些常规的安全准则: 别相信表单 攻击表单很简单。通过使用一个简单的 JavaScript 技巧,你可以限制你的表
如何用Perl访问SQLite数据库

如何用Perl访问SQLite数据库

SQLite是一个零配置、无服务端、基于文件的事务型数据库系统。由于它的轻量级,自包含和紧凑的设计,所以当你想要集成数据库到你的程序中时,SQLite是一个非常不错的选择。在这篇文章中,我会展示如何用Perl脚本来创建和访问SQLite数据库。我演示的Perl代码片段是完整的,所以你可以很简单地修改并集成到你的项目中。 访问SQLite的准备 我会使用SQLite DBI Perl驱动来连接到SQLite3。因此你需要在Linux中安装它(和SQLite3一起)。 Debian、 Ubuntu 或者 Linux Mint $ sudo apt-get install sqlite3 libdbd-sqlite3-perl CentOS、 Fedor
如何在 Ubuntu/Debian/Linux Mint 中编译和安装 wxWidgets

如何在 Ubuntu/Debian/Linux Mint 中编译和安装 wxWidgets

wxWidgets wxWidgets是一个程序开发框架/库, 允许你在Windows、Mac、Linux中使用相同的代码跨平台开发。它主要用C++写成,但也可以与其他语言绑定比如Python、Perl、Ruby。 本教程中我将向你展示如何在基于Debian的linux中如Ubuntu和Linux Mint中编译wxwidgets 3.0+。 从源码编译wxWidgets并不困难,仅仅需要几分钟。库可以按不同的方式来编译,比如静态或者动态库。 1. 下载 wxWidgets 第一步你需要从wxwidgets.org下载wxWidgets源码文件。 做完后,解压到目录。 2. 设置编译环境 要编译wxwidgets,我们需要一些工具包括C++编译器,在L