About xiayf | 夏永锋

工程师,Beego作者,腾讯、百度、拼多多。

The RSS's url is : http://blog.xiayf.cn/feeds/rss.xml

Please copy to your reader or subscribe it with :

Preview of RSS feed of xiayf | 夏永锋

团队开发流程规范

2023-04-05 00:00:00

本文原是针对实际工作中团队的情况编写的一份流程规范说明,隐去敏感信息之后存放于此。

开发流程规范 是一种团队 …

与一个前 leader 的交流笔记

2022-11-16 00:00:00

如下这份笔记,是 19 年和一个前 leader 交流后记录下来的。说是交流,其实是针对我当时工作中存在的问题,他给我提出的一些 …

读文笔记:关于 MMAP 与 SSD

2022-09-14 00:00:00

设计一种存储,第一要明确应用场景和存储系统的工作负载,第二要了解底层硬件的特点。

1、Are You Sure You Want to Use MMAP in Your Database Management …

Disruptor 等待策略引发的 CPU 负载异常问题

2020-07-14 00:00:00

背景

工作中,我负责的系统是一个数据流处理服务 - 以流水线(pipeline)的形式分多级异步处理:

其中的 队列 实际使用的是 Disruptor,多生 …

如何剖析 JVM 应用(译)

2020-07-13 00:00:00

原文链接:How to profile JVM applications

Hi 大家好。工具团队(tooling team)近期的一个关注点是改进 sbt 贡献流程( improvement of the contribution process to sbt)。我们一直在思考的 …

博客构建环境准备

2020-06-14 00:00:00

好记性不如烂笔头。

1、Python 虚拟环境

virtualenv -p python3 ~/.py3
source ~/.py3/bin/activate

2、安装 Python 依赖包

pip install pelican[Markdown]   # 可能需要先安装 pip:easy_install pip

3、安装主题包

git …

读文笔记:Kafka 官方设计文档

2019-10-13 00:00:00

原文:http://kafka.apache.org/documentation/#design

数据持久化

不用惧怕文件系统

磁盘的读写速度,取决于如何读写。对于线性读写方式,操作系统做了充 …

读文笔记:Photon - Fault-tolerant and Scalable Joining of Continuous Data Streams

2019-10-10 00:00:00

原文:Photon: Fault-tolerant and Scalable Joining of Continuous Data Streams

Photon 是谷歌广告系统中用于 join 广告曝光日志流和点击日志流的一套系统。

数据流 join 为什么没用 …

读文笔记:日志 - 每个软件工程师都应该了解的实时数据统一抽象

2019-10-10 00:00:00

原文:The Log: What every software engineer should know about real-time data's unifying abstraction

一句话概括,这篇文章细说了 Kafka 的本质原理、解决的问题、适用性等。

Kafka 本质上是提供日 …

Lucene 查询解析器语法(译)

2019-09-04 00:00:00

原文:Query Parser Syntax

概览

Lucene 除了提供 API 方便开发者创建查询请求,还通过一个查询解析器(一个词法分析器,使用 JavaCC 将一个字符串 …

一个 Python 小项目的小结

2019-08-14 00:00:00

前段时间临时接手一个 Python 小项目,这个项目实现的类似一个管控平台,其中核心功能是为算法同学提供机器学习模型训 …

Reactor 官方文档翻译简化版

2019-06-26 00:00:00

原文:Reactor 3 Reference Guide

1. 起步

1.1 Reactor 简介

Reactor 是为 JVM 准备的一个完全非阻塞的反应式编程基础组件,支持高效的需求管理(以管理 …

Java System.getProperty VS. System.getenv(译)

2019-06-25 00:00:00

原文:Java System.getProperty vs System.getenv

1、简介

Java 应用代码中会自动引入 java.lang 包。这个包包含很多常用的类,包括 NullPointerExceptionObjectMathString 等等。

其中 java.lang.System 类 …

Java 单测伴侣 - mockito

2019-06-17 00:00:00

其实工作以来,我很少写测试/单测代码,一方面是大部分互联网公司团队对测试的要求不高,另一方面是想写好测试代码 …

编写漂亮的 shell 代码

2018-05-16 00:00:00

使用丑陋的编程语言也能写出漂亮的代码。

true_then_run() {
    condition=$1
    action=$2

    (${condition})
    if [ $? -eq 0 ]
    then
        (${action})
    else
        echo "'$1' is false, don't run '$2'"
    fi
}

false_then_run() {
    condition=$1
    action=$2

    (${condition})
    if [ $? -ne 0 ]
    then
        (${action …

配置 Maven 自动化构建 protobuf 代码依赖

2018-05-14 00:00:00

1.pom.xml 中添加如下属性配置:

<properties>
    <!-- protobuf paths -->
    <protobuf.input.directory>${project.basedir}/src/main/protobuf</protobuf.input.directory>
    <protobuf.output.directory>${project.build.directory}/generated-sources</protobuf.output.directory>
    <!-- library versions -->
    <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
    <maven-antrun-plugin.version>1.8</maven-antrun-plugin …

《Python 编程之美》译者序

2018-04-01 00:00:00

从毕业至今,在互联网行业从事软件研发工作,将近五年。这五年间,做过后端开发、前端开发、大数据处理等,使用过的编程语 …

《精通Python设计模式》译者序

2016-07-01 00:00:00

在我读大学那几年,设计模式可谓火极一时,各大公司校招面试也几乎都会考设计模式,反观现在,则似乎很少有人聊设计 …

应用MySQL InnoDB全文索引

2016-06-11 00:00:00

问题

之前涉及的一项工作要求对某些数据做全文索引,并以API向其他内部系统提供搜索查询服务。

由于需要建全文索引的数据量并不大,且已有的数据都以 …

关于并发的一个小技巧

2016-06-10 00:00:00

前段时间在参与实现一个新业务系统的Demo。该系统集成了多个已有系统的数据,涉及的数据量较大,但由于人力少,时间短 …

关于API访问频率限制的一个问题

2016-06-05 00:00:00

工作中涉及一些对外开放的无需特殊权限的API,用户会因为某些需求而通过程序来频繁访问这些API,导致系统的负载陡 …

为什么我要送掉纸质书?

2016-02-28 00:00:00

小时候,不知为何喜欢读书,而又没钱买,所以在家都是翻两个哥哥的课本 - 语文、历史、地理等,都翻个遍。更有甚者,竟然还从邻 …

如何杀死defunct进程(译)

2016-02-18 00:00:00

原文:How to kill defunct process

译者:youngsterxyf

defunct进程是指出错损坏的进程,父子进程之间不会再通信。有时,它们会演变成“僵尸进程”,存留在你的系统中,直到系统重启。可以 …

Base64编码原理与应用

2016-01-24 00:00:00

2015年,我们在青云平台上实现了“百度云观测”应用。青云应用本质上是一个iframe,在向iframe服务方发送的请求中会携带一些数据,青云平台会使用Base64 URL对这些数据进行编 …

基于Github的pull request流程做开源贡献

2016-01-18 00:00:00

最近给 beego 提了几个 pull request (简称PR),都已被接受。在使用pull request的过程中,遇到了一点小问题,才知以前并非真的理解这个流程,故在此做点 …

关于Redis与Memcached的一点澄清(译)

2015-12-01 00:00:00

原文:Clarifications about Redis and Memcached

译者:youngsterxyf

译注:本文为Redis的作者所写

如果你了解我,就会知道我并不是那种认为竞品是一件坏事的人。实际上我喜欢用 …

青云 iframe 应用开发

2015-11-20 00:00:00

上周的主要工作是将产品的功能集成到青云。青云提供 iframe 的方式来集成第三方服务,这是一种互利的做法,而且对于青云 …

又一次系统故障

2015-11-16 00:00:00

上周五早上9点多,我还在上班的路上,接到技术leader的电话:线上突然出故障了;接着发来一张故障信息页面截图:

system-fault-err-page

截图包含的信息是:数 …

记一次系统故障

2015-10-02 00:00:00

前段时间,工作中遭遇一次故障,虽然不算什么“疑难杂症”,倒也花了不少时间才真正找到故障的原因,故也值得记录一下。

为 …

Xhprof安装与使用

2015-09-15 00:00:00

前两天遇到一个PHP代码的bug,分析的结果是:因为要处理的数据量过大,内存分配超出了限制(php.ini中配置项memory_limit,默认是128M)。长期使用Python …

Yii源码阅读笔记 - 错误/异常处理

2015-09-14 00:00:00

概述

PHP区分“错误”(Error)和“异常”(Exception)。“错误”通常是由PHP内部函数抛出,表示运行时问题,当然也可以通过函数trigger_erroruser_error抛出一个用户级别的error/warning/notice信息。但在 …

一行式并行方案(译)

2015-09-11 00:00:00

原文:Parallelism in one line

译者:youngsterxyf

在并行处理能力方面,Python的声名并不太好。不考虑关于线程和GIL(多数情况下是合理的)的标准论据,我认为Python中关于并行的真正问题并不是一个技术问题,而是教学 …

那些Python党踩过的PHP坑

2015-09-05 00:00:00

一看题目貌似本文要准备吐槽PHP,但遇到“坑”主要是因为个人经验不足。

JSON反序列化 json_decode

函数 json_decode 默认反序列化的结果是对象。Python党在做PHP开发用到这个方法时,很可能 …

编程名言集锦(译)

2015-06-02 00:00:00

原文:Programming Quotes

译者:youngsterxyf

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated …

Go并发编程基础(译)

2015-05-20 00:00:00

原文:Fundamentals of concurrent programming

译者:youngsterxyf

本文是一篇并发编程方面的入门文章,以Go语言编写示例代码,内容涵盖:

Yii源码阅读笔记 - 自定义类自动加载

2015-04-10 00:00:00

前两天突然发现:之前的阅读笔记对于Yii应用中如何自动加载自定义类的问题没有解释。这里的自定义类是指非Yii框架本身的类。

关于组件类的配置加载已在 Yii源码阅读笔记 - 组件集成 一文中做了 …

Slim源码阅读笔记

2015-03-22 00:00:00

以前读过 PHP - The Right Way 一文, 还翻译过其中的 The Baiscs 一节 (译文见 这里)。

前两周读了 Modern PHP - New Features and Good Practices 一书 (读书笔记见这里), 甚是不 …

读书笔记:Modern PHP - New Features and Good Practices

2015-03-12 00:00:00

modern-php

高清无码大图:戳这里


推荐阅读!

Yii源码阅读笔记 - 日志组件

2015-03-09 00:00:00

使用

Yii框架为开发者提供两个静态方法进行日志记录:

Yii::log($message, $level, $category);
Yii::trace($message, $category);

两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG:

defined('YII_DEBUG') or define('YII_DEBUG', true);

Yii::log方法的调用需要指定message的level和category。category是格式为“xxx.yyy.zzz …

又是一年

2015-01-03 00:00:00

又是一年,依照惯例,得写一篇总结和计划。当然计划更多的只是一种自我鼓励,现实总是一次又一次地证明“计划赶不上变 …

Cordova/Phonegap应用构建环境搭建

2014-12-31 00:00:00

混合(Hybrid)移动开发将Web开发与原生开发优势互补,之后应该是一个不错的方向。Phonegap是混合移动开发的一个方案, 开发者可以使用标准的Web技术进行开发,然后使用Phonegap打包成原生APP,也可以为Phonegap开发插件来扩展APP功能。 Cordova是Apache的顶级项目,起于Adobe贡献给Apache基金会的Phonegap源码,之后Phonegap官方貌似则专注于提供Phonegap应用的云构建服务 …

读书笔记:演讲之禅-一个技术演讲家的自白

2014-12-15 00:00:00

大大小小的技术会议参加过不少,关于演讲,从一个听众的角度也有一些心得;随着技术积累能力提升,也希望能够在一些 …

读书笔记:高性能PHP应用开发

2014-12-08 00:00:00

注:该书的部分内容过时了点 - 比如Opcode缓存:PHP 5.5之后内置一个用于缓存Opcode的组件Opcache,无需额外使用APC组件。所以需要“批判”地阅读。

mindmap-high-performance-php-application

高清无码大图:戳这里

Yii源码阅读笔记 - 应用模块化

2014-11-20 00:00:00

概述

Yii框架有个“模块(Module)”的概念,与“应用(Application)”类似,模块必须归属于一个父模块或者一个应用,模块不能单独部署,一个应用不一定要分 …

Yii源码阅读笔记 - 缓存

2014-11-19 00:00:00

概述

从之前的文章Yii源码阅读笔记 - 路由解析Yii源码阅读笔记 - Model层实现可以看到Yii框架对于解析好的路由规则数据表的schema都会根据条件尝试读写缓存 来提高 …

Yii源码阅读笔记 - 模板引擎集成

2014-11-18 00:00:00

概述

通常我们会使用模板引擎来渲染HTML页面,而不是使用HTML代码中插入PHP代码的方式来编写动态页面。Yii框架中模板引擎也是作为组件引入的,默认ID为viewRenderer, 但从Yii源码阅读笔记 - 组件集成可以看到Yii Web应用加载的核心组件中并没有viewRenderer,所以需要自己配置。 Yii提供了一个直接可用的模板引擎组件类CPradoViewRenderer(见 …

Yii源码阅读笔记 - Model层实现

2014-11-14 00:00:00

概述

Yii中,对Model层的使用,有两种方式:

  1. 通过类CDbConnection和CDbCommand来操作
  2. 使用ORM形式:编写model类继承自抽象类CActiveRecord

第1种方式的示例如下:

<?php
$connection = Yii::app()->db;  // 或者Yii::app()->getComponent('db');
$queryResult = $connection->createCommand($sql)->queryRow();

第2种方式中编写的model类可能需要实现方法getDbConnectionmodeltableName

在实现上,第2种方式是基于第1种方式的,即 …

Yii源码阅读笔记 - 组件集成

2014-11-13 00:00:00

概述

Yii框架将各种功能封装成组件,使用时按需配置加载,从而提高应用的性能。内置的组件又分为核心组件与非核心组件,核心组件是任何Web应用和Console应用都需要的。 此外,应 …

Yii源码阅读笔记 - 路由解析

2014-11-12 00:00:00

概述

Yii框架的路由解析功能由核心组件urlManager来完成。路由的形式有两种:

默认使用get路由形式。由于Yii中controller类命名和action方法都是按照规则命名的,而路由也是按照规则 …

读文笔记:An Introduction to APIs

2014-11-09 00:00:00

原文:An Introduction to APIs

注:该文是入门级别的文章

mind-mapping

高清无码大图

Yii源码阅读笔记 - 请求处理基本流程

2014-11-04 00:00:00

对于Web框架,我认为其主要有三点作用:

  1. 提供多人协作的基本规范
  2. 避免重复造轮子
  3. 开发者只需关注业务逻辑,脏活(如:基本的安 …

QCon上海2014大会见闻录

2014-10-21 00:00:00

技术

主题演讲

软件项目变更的管理和生存之道

个人对这个演讲的印象比较深。演讲者即是最近比较火的《Java程序员修炼之道》一书的作者 …

中心化日志记录架构(译)

2014-10-14 00:00:00

原文:Centralized Logging Architecture

译者:youngsterxyf

中心化日志记录一文中,我介绍了几个工具,用于解决中心化日志记录的问题。但这些工具一般仅能 …

流行PHP项目的phpmetrics分析(译)

2014-09-22 00:00:00

原文:phpmetrics of popular php projects

译者:youngsterxyf

之前我偶然发现一个名为phpmetrics的新工具,可用于计算及展示php的度量指标。我当时立马喜欢上了这个工具,并决 …

RESTful API设计的一点经验

2014-09-06 00:00:00

前段时间的工作涉及产品开放API的设计与实现,整个过程大致可分为以下几个步骤:

  1. 根据需求、原有数据库设计等,花了半天左右的工夫 …

基于socket.io的实时消息推送

2014-09-06 00:00:00

用户访问Web站点的过程是基于HTTP协议的,而HTTP协议的工作模式是:请求-响应,客户端发出访问请求,服务器端以资源数据响应请求。 也就是说,服务器端始终是被动的,即使服 …

面向分布式系统工程师的分布式系统理论(译)

2014-08-10 00:00:00

原文:Distributed systems theory for the distributed systems engineer

译者:youngsterxyf

Gwen Shapira,大腕级的解决方案架构师(SA),如今 Cloudera 的全职工程师,在 Twitter 上提的一个问题引起了我的 …

技术问题一问一答

2014-06-26 00:00:00

find . -size 0 -exec rm {} \;find . -size 0 | xargs rm -f

find默认会递归遍历所有子目录,如果想只在当前目录查找,可以添加参数-prune


微信服务号开发笔记

2014-06-14 00:00:00

原理

微信服务号的原理比较简单。从请求响应角度来看,逻辑是:

用户微信客户端 <---> 微信服务器 <---> 微信服务号后台程序 <---> 数据库 …

高流量站点NGINX与PHP-fpm配置优化(译)

2014-05-03 00:00:00

原文:Optimizing NGINX and PHP-fpm for high traffic sites

译者:youngsterxyf

使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。

以下正是这方面的一些提示和建议:

1. 将TCP切换为UNIX域套接字

UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的数据拷贝和上下文切换)。

但有 …

Firefox中“max-width:100%”不兼容问题

2014-04-28 00:00:00

这个博客是基于“Pelican + Markdown + 定制的my-gum主题”的。定制的主题将博文正文页面的 右边栏去掉,这导致在Firefox等浏览器中,正文中大的图片会突破正文块 …

Windows命令提示符中统计行数(译)

2014-03-05 00:00:00

原文:Counting lines in Windows command prompt

译者:youngsterxyf

使用内置工具FIND统计cmd.exe输出的行数非常方便!

在命令行环境中工作时,能够统计不同工具的输出结果的行数有时会非常 …

读书笔记:Web容量规划的艺术

2014-02-25 00:00:00

第1章 容量规划的目标、问题和过程

了解你的基础设施中每一部分何时会失败(最好不发生)对容量规划至关重要。

假设你有 …

如何实现Golang的http请求处理中间件(译)

2014-01-17 00:00:00

原文:Golang Http Handlers as Middleware

译者:youngsterxyf

大多数现代Web组件栈允许通过栈式/组件式中间件“过滤”请求,这样就能干净地从web应用中分离出横切关注点(译注:面向方面程序设计中的概念?)。 本 …

为何Goroutine的栈空间可以无限大?(译)

2014-01-17 00:00:00

原文:Why is a Goroutine's stack infinite?

译者:youngsterxyf

Go编程新手可能会偶然发现Go语言---与一个Goroutine可用栈空间大小相关---的一个古怪特性。这通常是由于程序员 无意间构造了一个无限递归函数调用而产生的。为了阐明 …

Go - 以任意类型的slices作为输入参数(译)

2014-01-16 00:00:00

原文:Go – taking slices of any type as input parameters

译者:youngsterxyf

最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向 对象编程而设计的。没有泛型,没有类型继承 …

回顾2013,展望2014

2014-01-06 00:00:00

2013已经过去了。

时间消逝得太快,以至于很多事情在记忆上相互重叠,无法明确区分事情发生的时间点。那么该如何回顾这过去的一年 …

微博"收藏/赞/转发"技术资料汇总

2013-12-28 00:00:00

使用新浪微博,我很少发状态,主要是跟踪技术圈的一些动态,技术牛人们都在搞些什么东东,因而收藏和转发了一些优秀 …

IE下JavaScript Date对象的不同之处

2013-12-03 00:00:00

之前在仓库作业机器监控系统项目中使用HighCharts的时间序列数据图来绘制机器CPU使用率、内存使用量、网络流量趋势变化图等,这些图在IE下却没有正常显示,IE也没有报错,按理说HighCharts的IE兼容性是较好的 …

某运营平台架构调整

2013-12-02 00:00:00

之前在运营开发规范化一文中提过工作中涉及一个运营平台。曾有段时间我一直吐槽该平台的代码实现有多烂,各种功 …

HAProxyConsole简介

2013-12-02 00:00:00

之前在Golang中如何让html/template不转义html标签搭建高可用负载均衡组件及缓存DNS两篇文章中都提到为了方便使用HAProxy,我实现了一个简单的HAProxy负载均衡任务管理系统。前些天我把 …

仓库作业机器监控系统设计与实现

2013-11-29 00:00:00

近期在参与一个仓库作业机器监控项目。该项目的需求背景是:公司的电商业务在全国各地有多处或大或小的仓库,仓库 …

读书笔记:Just For Fun - The Story of an Accidental Revolutionary

2013-11-07 00:00:00

前些天偶然在图灵社区上看到这本书的出版计划,才猛然想起之前看过一两个章节,遂再次找到该书的中文电子版原谅 …

修改PyPI源

2013-11-01 00:00:00

使用easy_install或pip安装Python第三方库,默认的源地址是:https://pypi.python.org/simple/ 。使用该源有两个问题:

1. 国内访问速度较慢

2. 由于该源使用https协议,若机器上没有安装openssl或ssl配置不对 …

Golang中如何让html/template不转义html标签

2013-11-01 00:00:00

近期在使用Golang的net/httphtml/template开发一个简单的HAProxy负载均衡任务管理系统(见搭建高可用负载均衡组件及缓存DNS一文说明)。

htmp/template在渲染页面模板的时 …

学在腾讯:简而美的微信后台架构

2013-10-23 00:00:00

注:公司分享讲座的一点笔记,不保证准确性。

问题

极致的业务特性

困难 …

搭建高可用负载均衡组件及缓存DNS

2013-10-16 00:00:00

该项工作,如题所示,主要分为两部分:高可用负载均衡组件、缓存DNS。

高可用负载均衡组件

需求:优化业务系统架构中某些关 …

运营开发规范化

2013-10-15 00:00:00

今年3月底毕业,入职腾讯做运营开发,至今6个月有余。入职之时组内仅有1个运营开发的同事,到目前已扩充到5人,加3个实习生。

入职之时的运营开发过程是这样的:

  1. 在 …

一项工作中涉及的几个命令

2013-10-14 00:00:00

今天写了点shell脚本,在一些CentOS服务器上进行了一些操作,涉及如下命令:

统计特定进程个数

如统计haproxy进程的个数

ps -e | grep haproxy | wc -l

获取特定进程的pid

如获取haproxy进程的pid

ps -e | grep haproxy …

从URL监控问题谈网站Web架构

2013-10-12 00:00:00

之前工作中实现了一个对站点进行URL监控的功能。原理是:

通过示例学习Git内部构造(译)

2013-09-28 00:00:00

原文:Learning Git Internals by Example

译者:youngsterxyf


状态:草稿

计划修订本文,未来可能会简化一些...

动机

从Subversion和Mercurial切换到Git之后的几个月,我始终觉得Git在本质上是不同于Subversion和Mercurial的,但没法确切地说出区别。 我 …

时间的心

2013-08-22 00:00:00

近期工作生活的一点心得:

珍惜自己的时间

乐于助人是好事,但,是需要耗费时间的,那么在助人之前就得确认帮助别人所 …

Y分钟学会Python(译)

2013-06-29 00:00:00

原文:Learn Python in Y Minutes

译者:youngsterxyf

Python由Guido Van Rossum发明于90年代初期,是目前最流行的编程语言之一,因其语法的清晰简洁我爱上了Python,其代码基本上可以 说是 …

FTP是90年代的,使用Git取代它来部署代码吧!(译)

2013-06-24 00:00:00

原文:FTP is so 90's. Let's deploy via Git instead!

译者:youngsterxyf

首先,在你的服务器上创建一个目录,并在其中初始化一个空的git仓库。我喜欢使用~/www/目录来 …

搭建测试服务器(源码编译方式)

2013-06-18 00:00:00

目前工作中开发流程还比较初级,甚至连测试服务器都没有,代码的变更都是直接先在开发人员的本地机器上简单测试 …

PHP最佳实践(译)

2013-06-01 00:00:00

原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks

译者:youngsterxyf

最后修订日期&维护者

本文档最后审阅于2013年3月8日。最后修改于2013年5月8日。

由我,Alex Cabal,维护该文档 …

城市的日子

2013-05-19 00:00:00

我仍须一个人
面对这个城市,
以及如此雷同的日复日。

电话、网络,
工作、技术、阅读、爱好,
朋友,
还有我的思考,
都改变不了,
这城市 …

编译安装MemcacheQ

2013-04-27 00:00:00

MemcacheQ是一个MemcacheDB的变种,用来提供简单的消息队列服务。(注:MemcacheDB并不是一个数据缓存解决方案,而是一个为数据持久化设计的分布式的键-值对数据存储系统,采用memcache协议,以BerkeleyDB作为存储后端,主页)。

MemcacheQ依赖于BerkeleyDB和libevent …

工作中的技术人

2013-04-23 00:00:00

工作入职半个月,有些事情不太顺利,还没有正式上手工作,也许大公司的节奏便是如此,但我内心是比较急的,希望能尽快 …

Windows上安装PHP开发测试环境

2013-04-15 00:00:00

先从HTTP请求处理流程图来看看我们所需的PHP开发测试环境包含哪些组件。

PHP开发测试环境

从图中可以看出系统包含如下几种组件之间的交互:

弄清问题,再求解决

2013-04-09 00:00:00

今天同事问我:是否有什么python库或工具能够将网页内容转换成图片格式的。他在做这方面的事情,还没有好的方法,因为觉得我对python比较熟悉,所以问一下。

但是我从一开始我就犯 …

argparse - 命令行选项与参数解析(译)

2013-03-30 00:00:00

原文:argparse – Command line option and argument parsing

译者:youngsterxyf

argparse模块作为optparse的一个替代被添加到Python2.7。argparse的实现支持一些不易于添加到optparse以及要求向后不兼容API变化的特性,因此以一个新模块添加到标准库。

与optparse相比较

argparse的API类似于optparse,甚至在很多情况下通过更新所使用的类名 …

读文笔记:What Powers Instagram

2013-03-27 00:00:00

原文:What Powers Instagram: Hundreds of Instances, Dozens of Technologies

该文从多个方面介绍Instagram整个系统栈(stack)的组成,罗列所使用的组件。我觉得重要的不是用了哪些组件和工具 …

学习JavaScript - 我的经验与建议(译)

2013-03-25 00:00:00

原文:learning JavaScript - my experience and advice

译者:youngsterxyf

自从我曾提到自己在刚过去的几个月中学习了JavaScript,很多人就发email给我询问我是如何学习JavaScript的以及推荐如何学习。以下就是我的经验和最 …

pip install lxml编译失败问题解决

2013-03-17 00:00:00

以前在遇到这个问题时,都是偷懒使用sudo apt-get install python-lxml(Debian系的Linux发行版)直接安装已打包好的deb包。但一方面这样安装的不是最新的库,另一方面 …

读书笔记:JavaScript语言精粹

2013-03-14 00:00:00

第2章:语法

JavaScript提供两种注释形式,一种是用/* */包围的注释块,另一种是以//为开头的行注释。 建议避免使用/* */,而用//注释代替它。


标识符由一个字母开头 …

JavaScript初学者应知的24条最佳实践(译)

2013-03-11 00:00:00

原文:24 JavaScript Best Practices for Beginners

译者:youngsterxyf

(注:阅读原文的时候没有注意发布日期,觉得不错就翻译了,翻译到JSON.parse那一节觉得有点不对路才发现是2009年发布的文章,不过还是不错的啦。另外 …

电脑重装记

2013-03-09 00:00:00

一台电脑使用时间长了,速度就会越来越慢,也会越来越“脏”,因为经过时间的积累,电脑里多了很多的软件、文件等,这些文件 …

PHP之道---PHP基础知识(译)

2013-03-08 00:00:00

原文:PHP: The Right Way - The Basics

译者:youngsterxyf

比较操作符

比较操作符往往是PHP的一个被忽视的方面,这会导致很多意想不到的结果。其中的一个问题源于严格比 …

数据压缩理论简介(译)

2013-02-27 00:00:00

原文:A introduction to compression

译者:youngsterxyf

最近我在思考GIF和JPEG图片格式之间的不同:为什么某些图片存储为GIF格式所占的磁盘空间更大,而另一些图片以JPEG格式存储要占用更大的磁盘空间?事实证明,这是因为不同的图片格式 …

JavaScript:继承和原型链(译)

2013-02-27 00:00:00

原文:Inheritance and the prototype chain

译者:youngsterxyf

对于具备基于类的编程语言(如Java或C++)经验的程序员来说,JavaScript有点混乱,因为它是一种动态语言,并且不提供class的 …

Python格式字符串(译)

2013-01-26 00:00:00

原文:Python String Format

译者:youngsterxyf

每次使用Python的格式字符串(string formatter),2.7及以上版本的,我都会犯错,并且有生之年,我想我都理解不了它们的文档。我非常习惯于更老的 …

python周刊-第70期(译)

2013-01-25 00:00:00

原文:issue 70 of Python Weekly

译者:youngsterxyf

文章,教程和讲座(Articles, Tutorials and Talks)

使用Python Hacking超级马里奥(Hacking Super Mario Bros. With Python)

This post shows how you can use matplotlib's animation tool to create animated gifs based on Super Mario Bros …

回顾12,展望13(技术篇)

2013-01-22 00:00:00

终归是个搞技术的,所以怎么也得搞个总结与展望的特别篇,讲述过去一年的技术学习与成果,规划接下来一年技术学习 …

回顾2012,展望2013

2013-01-18 00:00:00

过去的一年里发生了很多事情,很大一部分原来就已在2011年终-回顾与展望一文中提及---实习、找工作、毕业,除此之外还有:我和女朋友定亲了 …

可扩展的Web架构与分布式系统(译)

2013-01-16 00:00:00

原文:Scalable Web Architecture and Distributed Systems

译者:youngsterxyf

开源软件已成为一些最大型网站的基础组件。并且随着那些网站的发展,围绕它们的架构出现 …

精心挑选的数据可视化工具推荐列表(译)

2013-01-15 00:00:00

原文: A Carefully Selected List of Recommended Tools

译者:youngsterxyf

当我和很多人谈论我们的工作时,经常被问到我们使用什么技术实现交互式和动态的数据 …

github pages构建失败问题解决

2013-01-08 00:00:00

今天为本博客提交更新后,github pages自动构建始终不成功。原以为是新提交中引入了错误,于是按照Git操作:强制删除提交到远程版本库的数据与版本记 …

Git操作:强制删除提交到远程版本库的数据与版本记录

2013-01-08 00:00:00

今天因为某些尚不明了的问题导致,博客的Git pages始终构建失败,于是想在远程版本库中删除前几次提交。在该网页上找到了解决方案:

git …

装饰器与函数式Python(译)

2013-01-04 00:00:00

原文:Decorators and Functional Python

译者:youngsterxyf

装饰器是Python的一大特色。除了在语言中的原本用处,还帮助我们以一种有趣的方式(函数式)进行思考。

我打算自底 …

Python:字典剧本(译)

2013-01-04 00:00:00

原文: Python: The Dictionary Playbook

译者: youngsterxyf

我经常碰到关于Python中字典的各种样板代码,因此我决定在此展示一些,并分享完成相同操作的更加简洁的方式。

上演: 字典剧 …

一行Python代码定义树(译)

2013-01-04 00:00:00

原文:One-line Tree in Python

译者:youngsterxyf

使用Python内置的defaultdict可以轻松定义一棵树:

def tree(): return defaultdict(tree)

就这样!

这段代码简单地说明一棵树是一个字典,其缺省 …

几个组合命令

2012-12-12 00:00:00

1. Debian系Linux下查找某个软件包(以indent为例):

apt-cache search indent | awk '{if($1~/^indent$/) print $0}'

APT包管理工具也提供了类似功能的命令选项:

apt-cache pkgnames 'indent'

只不过这个输出仅有包名没有简介信息。

2. 对当前目录下的所有C源码文件使用indent进行格式化:

ls | grep '\.c$' | xargs indent …

高性能MySQL - 1.MySQL架构

2012-12-11 00:00:00

MySQL逻辑架构

mysql-arch

1. 每个客户连接在服务器进程中都拥有自己的线程,每个连接所属的查询都会在指定的某个单独线程中完成,这些线 …

日志信息命令行实时输出

2012-12-10 00:00:00

Web开发中很多时候需要边看web服务器的日志输出边调试代码。一般的做法使用tail命令输出日志文件的末尾几行日志信息。

tail -10 /var/log/nginx/access.log  # 输出末尾10行

但这样的输出是静态的。在这个命令执行之后,日志文件里新增的日志 …

VMware面试题目总结

2012-12-06 00:00:00

一面中主要有三道题:

1. 实现strcpy。函数原型:char strcpy(char dest, const char* src)。

后来发现自己实现的有问题。正确的实现应该如下:

char* strcpy(char* dest, const …

博大精深的ps命令

2012-12-06 00:00:00

Linux命令行里如何获取所有的进程号(pid)?

1. 第一种方法是通过ps -e或者ps aux获得所有进程的信息,然后通过管道传给grep或者awk进行数据过滤,比如

ps -e | awk '{print $1}'

2. 其实通过ps自身的选项就可以实现:

ps -eo pid

而且输出还是排好序的。

但 …

2012校招-sonicWALL的两道编程笔试题

2012-12-05 00:00:00

求二叉树中两个结点的最近公共祖先

比如:对于树

         A
       /
      B
    /   \
   C     D
 /   \
E     F

结点D,F的最近公共祖先为B

实现:见源码

求二进制整数部分bits求反后的值

比如:对于整 …

CentOS + rsync + inotify-tools实时备份配置

2012-11-29 00:00:00

现实中,服务器可能会因为各种原因而crash掉,从而造成数据丢失或者服务的暂时不可用。为了提高服务的可用性以及数据的 …

GoAccess用户手册(译)

2012-11-29 00:00:00

原文:http://goaccess.prosoftcorp.com/man

翻译:youngsterxyf

名称

goaccess - 快速的web日志分析器与交互式查看器

概要

goaccess [-f 输入文件] [-c] [-e] [-a]

描述

goaccess是一个实时的web日志分析器,以及交互式查看器,在类Unix系统的终端(terminal)上运行,是一个基 …

pi的一种并行算法

2012-11-22 00:00:00

我们都知道圆周率pi的值是3.141592653...,那么这个值是怎么算出来的呢?一种方式是通过某种方式算出圆的面积或者周长,然后根据公式 …

诗歌选

2012-11-20 00:00:00

南乡子

和杨元素,时移守密州

苏轼

东武望余杭,云海天涯两杳茫。何日功成名遂了,还乡,醉笑陪公三万场。

不用诉离觞,痛饮从 …

面试准备

2012-11-20 00:00:00

自我介绍

我叫夏永锋,目前是一名上海交大的硕士研究生,将于2013年3月毕业。现在作为一名web开发实习生在Google CSR部门实习。实习的工作内容主要包括:开发维护 …

笔试题目

2012-11-20 00:00:00

2013-网易-校园招聘-C++开发工程师

Fibonacci number

F(n)的值是多少?

Fabonacci

常规算法:根据Fabonacci的定义,递归求值。时间复杂度$ O(2^n) $

def fibobacci(n):
    return n>=2 and fibonacci(n-2) + fibonacci(n-1) or n

迭代:利 …

Python装饰器入门(译)

2012-07-30 00:00:00

原文: A primer on Python decorators

翻译: youngsterxyf

Python允许你,作为程序员,使用函数完成一些很酷的事情。在Python中,函数是一等对象(first-class object),这就意味着你可以像使 …

Python FAQ:Web开发(译)

2012-07-30 00:00:00

原文: Python FAQ: Webdev

译者: youngsterxyf

Python FAQ的一部分

我只会PHP,那该怎么用Python来编写一个Web应用呢?

这是一个相当复杂的问题,甚至很容易就能写一本书来探讨Web开发与Python …

关于技术的学习方法

2012-05-11 00:00:00

关于学习,时间短与效果好始终是一对矛盾的统一体。

很多时候,要想在最短的时间内完成一件事情,最好的方法就是依葫 …

ubuntu12.04+ngnix+php-fastcgi+mysql+memcached网站开发测试环境搭建

2012-05-10 00:00:00

1. 安装必要的软件

sudo apt-get install nginx php5-cli php5-cgi spawn-fcgi psmisc mysql-server \
mysql-client php5-mysql memcached php5-memcache php5-curl php5-gd

2. 打开浏览器访问: 127.0.0.1。就能看到表示nginx安装成功的页面。但这时访问php文件页面还不行。 (注:ngnix的配置文件目录为 …

Python对象创建过程(译)

2012-04-26 00:00:00

原文: Python object creation sequence

译者: youngsterxyf

[本文讨论的Python版本为3.x]

本文旨在探究Python中新对象的创建过程。正如我在前一篇文章中所解释的,对象的创建只是调用可调用对 …

关于指针的一道笔试题

2012-04-20 00:00:00

同学找实习,遇到这样一道笔试题:

int *a[2][3];
sizeof(a) = ?
sizeof(*a) = ?
sizeof(**a) = ?
sizeof(***a) = ?

这题还是有点小意思的。遇到这种题,脑子一定要清楚,注意 …

学习的"道"与"术"

2012-03-31 00:00:00

读研以来,一直觉得自己的学习方法不够高效。试图将要学习的东西进行分类,然后以不同的方法学习之。那么该如何分类 …

Python学习路线(针对具备一定编程经验者)

2012-02-21 00:00:00

相比C,C++,JAVA等编程语言,Python是易学的。但要想深入地理解Python,并熟练地编写Python风格的Python代码。我想还是有一长段路程要走的。下面即是我的一点经验总结,主要是 …

Linux命令习题

2012-02-15 00:00:00

For each of the outputs listed below, find one sequence of commands connected by pipes that produces the output. For each problem, turn in the command sequence that you used to generate the requested output. (Do NOT turn in the output itself.)

1. A listing of all processes that you …

2011年终-回顾与展望

2012-01-01 00:00:00

昨晚实验室聚餐,和师兄们喝醉了,明年的这个时候,我也就和他们一样将要毕业。时间,总是往前看觉得很漫长,可回过头去 …

《Classic Shell Scripting》:ls, locate, type, find, df, du, diff, patch

2011-12-23 00:00:00

一.ls

语法

ls [ options ] [ file(s) ]

用途

列出文件目录的内容

主要选项

-1 : 数字1.强制为单栏输出。在交互式模式下,ls一般会以适于当前窗口的最小宽度,使用多个列
-a : 显示 …

ArchLinux上安装Consolas字体

2011-12-23 00:00:00

  1. http://www.iplaysoft.com/consolas.html下载Consolas字体。

  2. 然后

    sudo mkdir -p /usr/share/fonts/yahei
    sudo cp YaHei.Consolas.1.11b.ttf /usr/share/fonts/yahei/
    
  3. 改变权限:

    sudo chmod 644 /usr/share/fonts/yahei/YaHei.Consolas.1.11b.ttf
    
  4. 安装:

    cd /usr …

《Classic Shell Scripting》:文件描述符处理

2011-12-22 00:00:00

在系统内部,UNIX是以一个小的整数数字,称为文件描述符(file descriptors),表示每个进程打开的文件。数字由零开始,至多到系统定义的打开文件数目的限制。传 …

《Classic Shell Scripting》:sed and cut

2011-12-22 00:00:00

一. sed

一般来说,执行文本替换的正确程序应该是sed --- 流编辑器(Stream Editor)。sed的设计就是用来以批处理的方式而不是交互的方式来编辑文件。当你知道要做好几个变更 --- 不管是对一个还是数个文 …

《Classic Shell Scripting》:sort, uniq, wc, head, tail

2011-12-22 00:00:00

一.sort

就像awk,cut与join一样,sort将输入看作具有多条记录的数据流,而记录是由可变宽度的字段组成,记录是以换行符作为定界符,字段的定界符则是空白字符或是用户指 …

《Classic Shell Scripting》第一、二章阅读笔记

2011-12-09 00:00:00

第一章:背景知识

软件工具的原则

一次做好一件事

处理文本行,不要处理二进制数据

使用正则表达式:正则表达式(regular expression)是 …

Linux添加定时任务

2011-12-07 00:00:00

在Linux下如果希望某个任务定时地执行,一般是使用cron服务器,将任务添加到cron任务列表中。

启动,关闭,重启cron(需超级用户权限)

/etc/init.d/cron start
/etc/init.d/cron stop
/etc/init.d/cron restart

注:archlinux下为/etc/rc.d/crond …

Linux添加sudo用户权限

2011-12-07 00:00:00

Linux中很多命令需要使用超级用户权限,在这些命令前添加sudo然后直接执行是很方便的。

那么就先要将自己的用户名添加到sudoers中: