Git 学习之一

Git是Linus用C实现的一个分布式版本控制工具,与Perforce、SVN和CVS这类集中式的版本控制工具不同。

  • 每台机器都是一台服务器,无需依赖网络就可以帮自己的更新提交到本地服务器,支持离线工作。当有网络环境的时候,就可以把更新推送给其他服务器。
  • 安全性高,每台机器都有代码以及版本信息的维护,所有即使某些机器挂掉了,代码依然是安全的。
  • 在Git中,同步更新的方式有很多种,可以把自己的更新推送给别人;也可以生成一个diff的patch,通过邮件方式把这个patch发送给别人。

建议:虽然分布式版本控制没有服务端的概念,但一般在一个Git系统中,为了方便大家交换更新,会找一台机器作为中心服务器,这台机器的目地只是为了方便大家交换更新。即使这台中心服务器挂了,大家依然可以继续工作,只是相互之间交换更新比较麻烦。

SQL学习之一

SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

查询和更新指令构成了 SQL 的 DML 部分:

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

ogre 源码学习之四(场景管理与渲染队列)

从图中我们可以看出render queue是Renderable的集合,这是必然的,因为场景树和渲染队列其实都是对Renderable进行分类,只是分类的标准不同,场景树主要是从空间结构对Renderable进行分类,而渲染队列则是对Renderable从material以及blend(渲染属性)上进行分类。

Octopress个性化配置

zsh: no matches found: new_post[…]

原因是zsh解释[]字符的问题。可以使用转义符来解决这一问题,避免麻烦的话,在~/.zshrc中加入:

1
    alias rake="noglob rake"

中文title

为方便直接使用中文作为博客的标题,仿照new_post,建一个自己的任务post,包含两个参数,一个作为文件名,一个作为中文标题。 在Rakefile末尾增加如下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
    desc "Begin a new post in #{source_dir}/#{posts_dir} with Alias"
    task :post, :title, :title_alias do |t, args|
      raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
      mkdir_p "#{source_dir}/#{posts_dir}"
      args.with_defaults(:title => 'new-post')
      title = args.title
      title_alias = args.title_alias
      filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}"
      if File.exist?(filename)
        abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
      end
      puts "Creating new post: #{filename}"
      open(filename, 'w') do |post|
        post.puts "---"
        post.puts "layout: post"
        post.puts "title: \"#{title_alias}\""
        post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
        post.puts "comments: true"
        post.puts "categories: "
        post.puts "---"
      end
    end

使用:

1
    rake post["How to create octopress blog","如何建立Octopress博客"]

设置使用指定的编辑器自动打开新建的blog

每次用rake new_post新建blog后都要手动打开编辑,果断google一下

在Rakefile中,找到## – Misc Configs – ##这段注释,然后在server_port下面加入editor = “open” 然后再找到new_post命令,在末尾加入如下代码:

1
2
3
    if #{editor}
    system "#{editor} #{filename}"
    end

字体

Octopresss默认使用的是 google webfonts,遗憾的是在天朝不好用,而且它没有中文字体,所以你用粗体,没有效果。 所以,将source/_includes/custom/head.html中的两行代码注释掉,省去了加载字体,加快网页加载速度。

<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<!-- <link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css"> -->
<!-- <link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css"> -->

参考最佳Web中文默认字体,在sass/custom/_fonts.scss 中添加如下三行代码:

$heading-font-family: arial, sans-serif;
$header-title-font-family: arial, sans-serif;
$header-subtitle-font-family: arial, sans-serif;

刷新网页,可以看见中文的粗体变黑了。

语法高亮

pygnment

``` [language] [title] [url] [link text]
    code snippet
```
[language] - Used by the syntax highlighter. Passing 'plain' disables highlighting. (Supported languages.)
[title] - Add a figcaption to your code block.
[url] - Download or reference link for your code.
[Link text] - Text for the link, defaults to 'link'.

Gist代码内嵌

当使用这种方式的代码高亮时,仅仅需要的是gist的id,个人的理解gist是,gist对每段用户上传的代码段都会有一个对应的id,当用户给出对应的代码的id后,将会从gist上面下载对应的已经高亮的html文件,最终在用户的页面上显示出来。 语法

{ % gist gist_id [filename] %}

example

{ % gist 996818 %}

如果一个gist的id对应有多个文件,这时需要对想要高亮的文件添加文件名,具体语法如下所示:

{ % gist 1059334 svg_bullets.rb %}
{ % gist 1059334 usage.scss %}

总体来说,gist代码高亮是很简单的,只是需要将代码上传到gist,然后获取相应的id然后按照上面的语法进行设置即可。只是每次在写博客时,都需要对博客文章中的代码拷贝到网址上生成,在没有网时,代码高亮比较麻烦。

使用Code Block的方式

目前自己的博客这种方式用的比较多,前面写的文章目前全部修改成为了这种方式,感觉这种方式和pygnment的方式差不多,之前全部采用的是pygnment的方式,利用正则表达式把所有文章的代码高亮全部改成了使用code block。它的具体语法如下所示:(与pygnment很相似,指定语言即可)

{ % codeblock [title] [lang:language] [url] [link text] %}
code snippet
{ % endcodeblock %}

和之前描述的类似,中括号的内容是可选的。

只显示摘要

如果希望在首页每篇博文只显示一部分内容,例如摘要。可以在你的markdown文件中插入:`

ogre 源码学习之二(几个基本类的实现)

几个基本类的实现: MemoryAllocator MemoryAllocator /** A set of categories that indicate the purpose of a chunk of memory being allocated. These categories will be provided at allocation time in order to allow the allocation policy to vary its behaviour if it wishes. This allows you to use a single policy but still have variant behaviour. The level of control it gives you is

进程,线程,并发

看了一些资料,记录以下自己的理解。

进程是表示资源分配的基本单位,它运行起来需要的是系统资源,是系统给他分配的一些资源。至于是不是系统调度的基本单位,实际上跟操作系统内核是有关系的,在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。有必要说下,进程需要的资源和线程需要的资源。跟操作系统有关,但是也很相像。

octopress 博客搭建

介绍

Jekyll

Jekyll一个简单的博客形态的静态站点生产机器。Jekyll 有一套模板目录,可以将 Markdown文件(或者Textile)转换为静态网页,并生成一个完整的可发布的静态网站。

Octopress

Octopress是基于 Jekyll 的博客框架。他们的关系就像 jQuery 与 js 的关系一样。它为我们提供了现成的美观的主题模板,并且配置简单,使用方便,大大降低了我们建站的门槛。

Ruby

Ruby是一种编程语言,Octopress是用Ruby实现的。

Github

GitHub 是全球最热的开源社区,提供代码托管服务,以及我们搭建博客所需要的Pages服务。