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

Git常用命令速查表

现在越来越多的开源项目也都迁移到GIT上了,可以说它是一个旅行必备、居家良 伴、送礼自用两相宜的VCS(版本控制系统),下文涵盖了一些基础的和较常用的 git操作,应该足以应对日常的工作需要。

GIT配置

使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名。

$ git config --global user.name your_name
$ git config --global user.email your_name@company.com
$ git config --global color.ui true
$ git config --global core.editor vi
$ git config --global commit.template ~/.git-commit-template.txt

SSH-KEY

$ ssh-keygen -t rsa -C "your_email@youremail.com"
$ cat ~/.ssh/id_rsa.pub

将内容复制下来贴到Github帐号->Account Settings -> SSH Keys里 这样在Github开专案,就可以push和pull下来了。

GIT ALIAS

一些好用的git alias,让我想起了项目中之前使用过的CVS版本控制系统

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.br branch

这样只要输入git st 就是git status 了,git 设定档的位置在~/.gitconfig, 你也可以直接修改这个档案。

忽略某些文件

项目中经常会生成一些Git系统不需要追踪(track)的文件,典型的是在编译生成 过程中产生的文件或是编程器生成的临时备份文件。当然,你不追踪(track)这些 文件,可以平时不用”git add”去把它们加到索引中。但是这样会很快变成一件烦 人的事,你发现项目中到处有未追踪(untracked)的文件; 这样也使”git add .” 和”git commit -a” 变得实际上没有用处,同时”git status”命令的输出也会有 它们。你可以在你的顶层工作目录中添加一个叫”.gitignore”的文件,来告诉Git 系统要忽略掉哪些文件。

你也可以把”.gitignore” 这个文件放到工作树(working tree)里的其它目录中,这 就会在它和它的子目录起忽略(ignore) 指定文件的作用。.gitignore文件同样可以 像其它文件一样加到项目仓库里(直接用git add .gitignore 和 git commit等命令), 这样项目里的其它开发者也能共享同一套忽略文件规则。

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是个好习惯。