Learn by Making Notes.
Share by Posting Notes.

Sat, May 11, 2013

在Unix/Linux中,可执行文件、目标文件(.o)、共享库(.so)等一般都是ELF(Executable and Linkable Format)格式的。一个ELF文件的大致结构如下所示,

ELF layout

首先是ELF header,它描述了这个ELF文件的概况,比如数据的编码方式、ELF文件的类型、program header和section header的起始位置(起始字节)等。ELF header同时还指定了自身的长度,一般而言是64字节(byte);之后,就是program header。
readelf命令可以用来检查ELF文件的内容。查看ELF header的命令如下,

阅读更多…

Sun, Mar 18, 2012

Git通过一系列配置文件来决定它的行为。/etc/gitconfig是Git最先查看的配置文件。这个文件中的配置信息会应用于系统上的每个用户的每个仓库。运行git config命令时加上--system选项,会读写这个配置文件。下一个配置文件是~/.gitconfig,存放着某个用户的特定配置;--global选项可读写这个配置文件。最后,Git会查看当前仓库中的.git/config文件;该文件存放着这个仓库特定的配置信息。这三个配置文件有着不同的优先级,/etc/gitconfig最低,.git/config最高,低优先级的配置信息会被高优先级的所覆盖。虽然可以手工修改这三个文件来配置Git,但是推荐运行git config命令来进行读写。

最常用的配置信息是用户名(username)和邮件(email),因为Git的每一次提交中都会保存用户名和邮件地址信息。可以使用如下方式来设置,

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com  

Github是当前最流行的在线代码仓库。每个Github账户都有对应的邮箱(可以有多个邮箱),Github通过查看一个提交中的邮箱信息来“认定“这次提交归功于哪个用户。所以从一台(新)机器提交代码到远程Github仓库前,要检查一下Git的邮箱配置信息是否正确。工作在多台机器上时,要特别注意这点。详见Github帮助

另外,一台机器上可能同时存在不同类型的仓库,比如私人项目和公司项目。这些不同类型的仓库往往使用不同的邮件地址。这时最好不要配置global的邮件地址,转而为每个仓库分别设置邮件地址。

通过git config还可以为一些Git命令设置别名,比如

$ git config --global alias.co checkout
$ git config --global alias.st status
$ git config --global alias.last ’log -1 HEAD’

当然还可以配置其它更丰富的信息,可以参见Pro Git的相关章节。

Tue, Mar 13, 2012

搭建博客站点有很多种方式,比如WordPress框架、Django框架。只是WordPress需要懂PHP语言,Django需要知晓Python语言;此外,还需要了解一些数据库的知识。相比而言,使用JekyllGithub搭建博客站点会显得简单一点。Jekyll是一个静态站点生成器(static site generator),换言之,不使用数据库;Github则是互联网上的代码/内容托管服务器。Github公司利用Jekyll将我们站点的“原始(raw)内容”生成一个标准的静态站点,放在Github的主机上让我们的读者访问。Github将这种服务称为Github Pages

github artwork

Jekyll+Github(Github Pages)的优点,一言以蔽之,就是简单(Simple)。我们不必为搭建一个站点去学习一门语言(比如PHP或者Python),去学习数据库知识,去寻找合适的主机。在搭建好站点后(搭建的过程不会很复杂),我们只需要专注于写作就可以。

Jekyll和Github用到了下面所列的技术:

  • git,流行的版本控制软件。在这里只是简单地将它当成一种内容上传工具——将你本地电脑上的站点内容通过git上 传到Github的主机上。这里,可以简单把git当成一个类FTP的工具。
  • YAML,可以用来表达列表(list)、哈希表(key value table)等数据的一种文本格式。通过给站点中的某 个文件(比如某篇文章)加上“YAML头“,让Jekyll知道这个文件的“元信息”。比如,在一篇博客的头部加上如下 的“YAML头”,
阅读更多…
Prev END