Ruby元编程之Proc对象


Proc

Proc对象其实就是将代码块(block)转换成对象的块。方式有大致几种:

1.Proc对象

    inc = Proc.new{ |x| x + 1 }
    inc.call(3)     #=>4

2.lambda方法

    inc = lambda{ |x| x + 1 }
    inc.call(3)     #=>4
Read more ⟶

Vim下的的插件管理神器——Vundle


断断续续用Vim也不少时间了,但是从来没有进行过复杂的Vim配置,每每需要插件都是网上寻求安装方式。但是当插件多了管理也便变得繁琐,最后终于让我结识了插件管理神器——Vundle,用过的人都说好用,所以我便也尝试了,网上也有一部分人采用pathogen来进行插件管理,但是据说没有Vundle好用,也便没有尝试,下面对我使用Vundle做一个总结。

首先Vundle采用git插件的git repo以及vim-scripts维护的GitHub repo, 自动安装, 更新和卸载插件. 把这些繁杂的工作变得简单, 甚至, 成为一种享受.

##安装 Vundle地址,上面安装及配置步骤已经很详细,我在此再赘述下:

1.拷贝Vundle $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

上面步骤将vundle拷贝到本地的~/.vim/bundle/vundle目录下

2.Vundle配置

以下是我的配置文件:

Read more ⟶

Git的相关操作


##查看Git远程库地址 建立了远程库后,许久没操作,突然忘了其对应的具体远程库的url。可通过以下命令来查看:

$git remote -v

-v选项是–verbose的简写,最后结果为:

origin git@github.com:xautjzd/RubyExample.git (fetch)  
origin git@github.com:xautjzd/RubyExample.git (push)

要查看详细信息,则可以通过如下命令查看:

$git remote show remote-name

##添加远程库地址 $git remote add reponame url

##远程库的重命名 $git remote rename oldname newname

Read more ⟶

Ruby基础之Array,String and Hash


##Array

数组通常都是同种元素的集合,元素可以为单个的变量,如数值或者字符串,但是也可以为数组和Hash等复杂对象。

###数组表示矩阵

其实数组可以用来表示矩阵,矩阵可以被看作数组的数组,也就是每个数组元素都是数组。三行三列的矩阵可以表示为:

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

“5”的位置则是: a[1][1]

###数组初始化陷阱

初始化数组时,若要使用数组对象或Hash对象作为初始值的元素时必须非常小心,否则便会陷入陷阱当中,如下所示:

a = Array.new(3, [0, 0, 0])
Read more ⟶

Ruby基础


##变量分类

  • 局部变量

一般以小写字母或下划线开头,当多个单词组成一个变量时,单词间用_分隔。局部变量一般用在代码快里面

  • 全局变量

全局变量在整个ruby程序中都可以访问,无论他们在哪被定义。全局变量以$开头。eg:

$global_variable = 10

  • 实例变量

实例变量的范围则是类的实例,属于某个类的实例所有,实例间相互独立。实例变量以@开头。eg:

@instance_variable = 10

Read more ⟶

Octopress 修改导航栏(Navigator)


搭建好的Octopress导航栏默认只有Blog和Archives,远远不能满足要求,于是便想着在导航栏上添加几个菜单。方法如下: $rake new_page[About] 默认会在source目录中生成about/index.markdown文件,不过感觉这样影响视觉,便想着将生成的页面和其他页面放在一起,便可进行如下操作: $rake new_page[/blog/About] 这样便在source/blog目录中生成页面,方面管理。生成的页面目前还不能显示,还需编辑source/_includes/custom/navigation.html文件: $vim source/_includes/custom/navigation.html 在其中加入 关于我 编辑完成后进行rake generate生成静态的html文件,然后rake preview便可以通过localhost:4000在本地预览。…
Read more ⟶

Octopress目录结构


###Octopress博客目录结构 octopress博客的source目录结构大致如下: source/ ├── _attachments ├── _includes │ ├── asides │ ├── custom │ │ └── asides │ └── post ├── _layouts ├── _nav_menu_items ├── _pages ├── _posts ├── blog │ └── archives ├── font ├── images │ ├── 2012 │ │ ├── 01 │ │ ├── 02 │ ├── 2013 │ │ └── 01 │ ├── fancybox │ └── social ├── javascripts │ ├── asides │ └── libs ├── jsccp └── stylesheets ├── bootstrap └── syntax 当使用rake generate时,source的_post目录中的markdown文件会被编译成html文件,并拷贝到public目录下,public目录结构与source目录结构一致,里面的内容为最终的静态页面。一般都是先rake generate生成静态页面,然后通过rake preview进行本地预览,如果显示正常,则rake deploy部署到github上。如果特别熟练,也可以直接生成静态页面并部署,不需要本地预览。可以采用rake gen_deploy一步进行。…
Read more ⟶

Octopress配置Disqus插件


###添加Disqus插件 看到不少人博客上都有Comments功能,便也想给自己的博客添加上。经过搜寻一番,发现大多用的都是Disqus,而且octopress其实内置了其功能,只是默认没有设置.编辑博客主目录下的config.yml文件即可: $vim _config.yml 找到: #Disqus comments disqus_short_name: disqus_show_comment_count: false 填上自己注册的disqus账号的short name,并将false改成true即可。 注:Disqus一定要和yourname.github.com关联…
Read more ⟶

我的第一篇博客


几个月前看过Ruby基本语法,也无意中接触了Octopress,便想在GitHub pages上采用Octopress搭建一个属于自己的博客,照着官网提示开始动手实施,不过最后以失败告终。后又忙于其他工作,此事便搁浅。直至最近得空,便又开始着手此事。搭建博客工作再一次展开。 详细搭建过程官方文档写的相当详细,这里不再赘述,请参考: 官网 下面只说我搭建过程中遇到的难题: 我每次都是运行rake deploy时出现问题,也就是博客无法push到github的repository中。 每次都是![rejected] master->master (no-fast-forward) 最后网上找了不少资料,然后自己也细细思考了一番,最后终得以解决。方法如下: 转到deploy目录下,执行$git pull,然后再执行git push origin master即可。…
Read more ⟶

配置文章分类插件


Octopress搭建的博客默认没有文章分类,这肯定让人很不爽,但这个号称Hacker的博客肯定有这功能,便网上搜寻了答案,最终得以解决。方法如下: ###1. 添加category_list插件 代码如下: module Jekyll class CategoryListTag < Liquid::Tag def render(context) html = "" categories = context.registers[:site].categories.keys categories.sort.each do |category| posts_in_category = context.registers[:site].categories[category].size category_dir = context.registers[:site].config['category_dir'] category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase) html << "<li class='category'><a href='/#{category_url}/'>#{category} (#{posts_in_category})</a></li>\n" end html end end end Liquid::Template.register_tag('category_list', Jekyll::CategoryListTag) 将以上代码保存到plugins/category_list_tag.rb中。 这个插件会向liquid注册一个名为category_list的tag,该tag就是以li的形式将站点所有的category组织起来。如果要将category加入到侧边导航栏,需要增加一个aside 2. 添加category到aside中 在source/_include/custom/asides中新建category_list.html文件,并且将以下代码复制到其中: <section> <h1>Categories</h1> <ul id="categories"> {\% category_list %} </ul> </section> 其中\是为了显示才添加上的,不然无法正常显示,复制代码时请去掉%前的\。 3. 配置侧边栏 在_config.yml中配置侧边栏,修改其中的default_asides项: default_asides: [custom/asides/category_list.html, ...] …
Read more ⟶