艾莉亚的猫 Time is limited, To be a better man

2015年阅读书单

大话数据结构

程序员的职业素养

非暴力沟通

冰鉴

Ganglia系统监控

大象如何站在铅笔上

ZeroC Ice权威指南

python黑帽子

时间管理

面对面

C++网络编程.卷1

C++网络编程.卷2

Head First设计模式

Linux技术手册

数据库系统概念

我们可以用Github做些什么?

最通用的,star喜欢的项目,fork并pull为他人项目打补丁

几个其他的用途

  1. Github Pages 可以为项目建立静态主页(即gh-pages分支), 也可以建立命名特殊的repo(http://username.github.io)来建立个人静态网站(使用 GitHub Pages 来做博客并非不道德)

  2. Vim vundle 用户重度依赖Github来管理插件

  3. Github可以作为自己的简历,比如 GitHub Résumé

  4. 在线编译和测试社区Travis CI依赖Github

  5. Gists管理代码片段,而且可以内嵌到网页

  6. 托管编程环境。在Github上搜索dotfiles来看看大家都怎么管理自己的vim, git,tmux等配置文件的。一般的,我们可以通过submodule来管理插件等第三方工具

  7. 可以为自己的项目建立Wiki,github/gollum 是其backend. 而且,我们可以用markdown写wiki,用git来管理wiki

  8. Read the Docs ,这个东西当然不是Github官方的,但是它会检出你的Github上指定项目的docs目录,并用sphinx来生成在线文档。其实readthedocs也是个’静态服务器’

  9. Github API 你可以用Github API做很多事情: 用github issues系统来做评论系统( petalcomcom ) ,用Github的markdown接口来渲染markdown,用github的oauth来做第三方登录..

Github可以做的,但这么做是否合适?

  • 单纯地用Github存代码,甚至当做Dropbox来用

  • 用github 当图床, 这与拿github做网盘没区别

  • Github issues != BBS


原文来自知乎,略做修改

煎蛋吐司

“两个人吃的是饭,一个人吃的是饲料。”——日剧《最完美的离婚》

就算这样,那也要用心地吃饲料啊。

材料

  1. 超醇厚片吐司
  2. 柴鸡蛋
  3. 花生油
  4. 玫瑰红糖膏
  5. 枣片

步骤

  1. 锅内倒入少许花生油,加至5成热
  2. 将鸡蛋打入,约10秒后在尚未凝固的鸡蛋上盖上吐司(盖上吐司前用锅铲将蛋黄刺破,可以形成薄而均匀的溏心鸡蛋,更加美味)
  3. 小火煎至鸡蛋完全凝固,并与吐司紧密贴合
  4. 用锅铲将吐司反面,小火煎至吐司变金黄色
  5. 出锅入盘,搭配玫瑰红糖膏,搭配枣片

完成

1

C语言小程序

最近在看c语言的书,觉得还蛮有意思,有点收获,收集了几个优美的C语言程序。

1 将10进制数装换为任意进制数的小函数

char *
baseconv(unsigned int num, int base)
{
	static char retbuf[33];
	char *p;

	if(base < 2 || base > 16)
		return NULL;

	p = &retbuf[sizeof(retbuf)-1];
	*p = '\0';

	do{
		*--p = "0123456789abcdef"[num % base];
		num /= base;
	}while(num != 0);

	return p;
}

“abcdef”[5]可以理解为 char *p = “abcdef”; …p[5]… 数组和下标在c语言中可以互换,所以也可写成5[“abcdef”](不提倡哈,原因你懂的)

2 计算无符号整数中为1的位的个数

static int bittab[] = {
	0,1,1,2,
	1,2,2,3,
	1,2,2,3,
	2,3,3,4
};

int bitcount(unsigned int u)
{
	int n = 0;

	for(; u != 0; u >>= 4)
		n += bittab[u & 0x0f];

	return n;
}

有关按位操作也没啥好介绍的,只是这个bittab数组构造的很精巧。

3 free函数的封装

void saferFree(void **pp)
{
	if(pp != NULL && *pp != NULL){
		free(*pp);
		*pp = NULL;
	}
}

#define safeFree(p) saferFree((void**)&(p))

free函数不会检查传入的指针是否是NULL,也不会在返回前把指针置为NULL。释放指针之后将其置为NULL是个好习惯。

旅行的意义

情怀,真的是个好东西。有时候累了倦了,带着情怀地出去一本正经的瞎玩,就是一次旅行。

无论现实如何,你都能在心里有一个更诗意的世界。