最通用的,star喜欢的项目,fork并pull为他人项目打补丁
几个其他的用途
Github Pages 可以为项目建立静态主页(即gh-pages分支), 也可以建立命名特殊的repo(http://username.github.io)来建立个人静态网站(使用 GitHub Pages 来做博客并非不道德)
Vim vundle 用户重度依赖Github来管理插件
Github可以作为自己的简历,比如 GitHub Résumé
在线编译和测试社区Travis CI依赖Github
用Gists管理代码片段,而且可以内嵌到网页
托管编程环境。在Github上搜索dotfiles来看看大家都怎么管理自己的vim, git,tmux等配置文件的。一般的,我们可以通过submodule来管理插件等第三方工具
可以为自己的项目建立Wiki,github/gollum 是其backend. 而且,我们可以用markdown写wiki,用git来管理wiki
Read the Docs ,这个东西当然不是Github官方的,但是它会检出你的Github上指定项目的docs目录,并用sphinx来生成在线文档。其实readthedocs也是个’静态服务器’
Github API 你可以用Github API做很多事情: 用github issues系统来做评论系统( petal,comcom ) ,用Github的markdown接口来渲染markdown,用github的oauth来做第三方登录..
Github可以做的,但这么做是否合适?
单纯地用Github存代码,甚至当做Dropbox来用
用github 当图床, 这与拿github做网盘没区别
Github issues != BBS
原文来自知乎,略做修改
“两个人吃的是饭,一个人吃的是饲料。”——日剧《最完美的离婚》
就算这样,那也要用心地吃饲料啊。
最近在看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是个好习惯。