查看网站所用Web服务器类型
学习Rails的Layout过程中,其中有提到curl,所以便简单的看了下curl的功能。虽说以前学习Shell的过程中也看到过curl,不过没怎么用过,只知道和wget功能类似,只是wget是将请求的web资源下载到本地,而curl则是在shell中显示,至于有什么其他功能也便不清楚。但是今天发现curl其实还可以用来查看website所用的web服务器类型,通过curl -I url-you-want-to-lookup命令查看即可。以下是我查看ruby-china的一个截图:

从中可以发现ruby-china采用的是nginx服务器。至于curl其他的功能慢慢再发掘吧。
…账号注册通过邮箱激活
邮箱激活目的
防止用户注册时所填写的信息为虚假信息
邮箱激活的原理
用户注册时,根据用户名、Email及注册时间(精确到ms)等信息通过特定的算法(如:MD5、SHA,最好不可逆)生成相应的信息摘要(也称消息摘要)作为注册的激活码,保存到数据库当中,并且将其作为url的参数,将带有激活码的url链接发送到用户注册的Email中。
只有当用户进入邮箱中并点击该链接后,通过url中的激活码找出数据库中匹配的用户,并将此账号设为“已激活”的状态。
注:此过程没有考虑激活码过期问题,同时信息摘要也可以通过随机数来表示,不一定非要通过用户名等信息生成
Rails代码参考:
http://stackoverflow.com/questions/12805523/activate-user-via-email-in-rails
…Bash到oh-my-zsh的转变
从开始使用到现在一直使用的bash,虽然以前听过ksh,csh,sh等,但都不曾用过,今年开始zsh便不断地出入在眼前,但没真正见人用过,也不知道效果咋样,所以也没做尝试。
另一个原因是各大linux默认都是bash,说明其功能不错,而且也处于懒的原因,就没折腾。但最近在使用tmux的过程中发现bash的提示符只显示-bash4.2$字样,并没有显示成user@hostname directory,在加上西安rubyist的熟人皓哥强烈推荐,这就坚定了我舍弃bash转到zsh的决心,二话不说,立马上GitHub上找到oh-my-zsh。就照着readme开始尝试,结果出现了错误,Google找到答案,是zsh没有安装才导致,所以就yum install zsh安装了zsh,随后在通过
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
安装了oh-my-zsh。不过此时系统默认还是bash,所以还得更改系统默认的shell,方法如下:
###1. 修改/etc/shells文件
先通过$which zsh查看zsh的位置,我zsh位于/usr/bin/zsh。然后再查看/etc/shells中是否含有zsh:
$< /etc/shells grep zsh
如果结果中没有/usr/bin/zsh,则需要手动将/usr/bin/zsh添加到/etc/shells文件中。
###2. 更改默认的shell
通过$chsh -s /usr/bin/zsh更改系统默认shell,退出系统,重新登陆便会发现系统默认的shell已经变为zsh,同时也可以更改zsh默认的主题,在~/.zshrc中更改ZSH_THEME属性即可,其被选的值在oh-my-zsh theme中任选一个即可。
经过以上两步,oh-my-zsh便安装完成。但是写博客时发现rake new_post["xxx"]时出现zsh: no matches found: new_post错误,Google找到答案,只需改为rake 'new_post["xxx"]'即可,原因是zsh会将一些特殊符号当作查找文件的通配符等,根源解决方法是:取消zsh的通配(Glob),即在~/.zshrc中加入alias rake="noglob rake"。
参考:oh-my-zsh官网
…vim-airline插件patched font配置成功
前段时间装好了airline插件,但是没呈现应有的效果,原因是没有安装字体。根据官网的提示需要安装powerline的字体,我便照着powerline官网的配置方法来,但是还是没有成功。其原因是我安装了patched fonts,但是没有将terminal的font设置为patched fonts中的一种,所以statusbar会有乱码。下面对安装patched fonts做一个小结。
安装patched fonts方式请参考:powerline字体配置,尽管文档很详细,但是还是重复一下:
1.Download patched fonts
$mkdir ~/.fonts新建一个font文件夹,然后$cd ~/.fonts进入.fonts文件夹。$git clone git@github.com:Lokaltog/powerline-fonts.git将powerline的patched fonts拷贝到~/.fonts目录下,目录结构如下图:

2.Install the patched fonts to your System
运行$fc-cache -vf ~/.fonts安装patched fonts到系统中
3.Set Terminal fonts
设置Terminal字体非常重要,我初次配置时,安装patched fonts,但是由于没有set terminal font,所以statusbar显示乱码。设置方法如下:
Edit——Profiles——Default(Edit)——General——Font,选择~/.fonts/powerline下的某一种即可(可选范围一定要在刚才下载的patched fonts中选一种,否则乱码。),当然也可以采取powerline font installing中的另一种方式,不过我没做尝试,有兴趣的朋友try it。配置截图如下:

最后可以在~/.vimrc中更改airline的theme。更改方式如下:
let g:airline_theme="molokai"
…vim文件的折叠与展开方式
最近一直在用Vim学习Ruby,但是一直有个问题困扰:
那就是文件无法折叠,但是我记得以前看过Vim的视频,里面见别人用到了折叠与展开。文件比较小时,此功能便无用,但一旦文件量大时,折叠与展开便显得尤为重要了。
折叠的方式有以下几种:
- manual
- indent
- syntax
- marker
- expr
- diff
###1. Manual method
vim默认的折叠方式是此种方式,不需要设置即可。要启用其他方式还得采用:set foldmethod=xxx或者:set fdm=xxx来设置。
使用方法:
v或者V进入visual mode,然后选中要折叠的文字,按zf便可折叠,折叠后按za或者zO便展开。
同时也可以通过zfnj的方式将接下来的n行折叠。类似也有zfnk等;zR则打开所有的折叠。总结下来就是:
- zf => create a fold
- za => unfold
- zf#j => fold down # lines
- zf#k => fold up #lines
- zR => unfold all
###2. Indent method
缩进方式主要是根据代码缩进的方式来折叠/展开代码。要使用缩进方式,则需要做配置,:set foldmethod=indent或者在~/.vimrc中配置:set foldmethod=indent。
其快捷键如下: zM => fold all zR => unfold all za => fold/unfold
###3. Syntax method
采用syntax方式,则只需如下配置即可:
:set fdm=syntax
按键方式与上述相似
###4. Marker method
…Linux活动发起
独乐乐不如众乐乐,独自一人埋头苦学不如一群兴趣相投之人的一起交流。记得以前大一大二时,希望能有一个领路人领着自己学习,帮自己找准学习的方向,毕竟当时太年轻,太多东西不了解,所以不知道软件这行业该学习什么,哪些东西比较有兴趣,一切源于自己接触的太少,身边也没有可交流之人。再加上学校大一大二和大三大四分隔新旧两校区,交流就更少。
正是因为自己的这些经历,然后再加上近来参加西安的rubyist party,促使了我组建Linux小组并且定期举办活动的冲动。一个人的埋头苦学,所见所闻永远局限在某个狭小的空间,只有走出去,与他们交流才能拓宽自己的知识面,提升自己的认知度,也算是多了一些朋友,多了一些交流。正所谓话不投机半句多,与自己志不同道不和的人交流真是有点对牛弹琴的感觉。所以要交流得找兴趣相投志同道合之人。
打算成立的小组规模大致10人左右,无需太多,也不希望有滥竽充数的现象。所以希望小组成员能满足以下条件:
- 对软件感兴趣
- 熟悉Linux(基本操作一般没问题)
- Vim | Emacs
具备以下更佳:
- Git
- Ruby/Python/Lisp/Scala/Prolog
- 个人博客
初期打算:
- 每周一次Party(主要技术交流)
有兴趣的学习请联系我,联系方式:
- 新郎微薄:xautjzd
其他联系方式见我的About
…Ruby中symbol与string的区别
记得当初学习Ruby基本语法时,还为Symbol与String的异同纠结了好久,后来经过一段时间的摸索,大致有了了解,但让我给他人解释,这点我还是办不到。但是今天看到了一篇博文,让我彻底明白他们的区别。
symbol定义
Symbol其实就是string加上前缀:。
二者异同点
其实Symbol与String本质相同,是string 的两种不同呈现方式。由于受SmallTalk影响,Ruby一切皆对象。所以每次给string赋值,name="xautjzd"其实都是在内存中创建一个新对象。每次创建的对象的object_id都不相同。
而symbol则不同,symbol创建一次即可。以后所有的操作都是指向先前创建的对象。所以object_id相同。
不同点大致有三:
- symbol为常量,值不能改变。
- 多次使用同一个symbol,object_id相同,而多次使用string,每个对象有不同的object_id。
- String的方法,eg:#upcase,#split不能用于Symbol。
参考网址
…Vim学习资源
实用的快捷方式
…更换Octopress主题
Octopress博客搭建已经有一阵了,但一直采用的默认的主题,没时间更换。今天特意抽时间来更换下,先上Octopress官网了解了下更换Theme的原理,然后上Octopress所在的源码托管平台GitHub,在其Wiki上找到了第三方Themes,便从前到后大致将各种themes都预览了一遍,最后选择了Greyshade主题,安装方法官网写的已经非常详细,这里再啰嗦一遍:
###Install
$ cd octopress #octopress directory
$ git clone git@github.com:shashankmehta/greyshade.git .themes/greyshade
$ echo "\$greyshade: color;" >> sass/custom/_colors.scss //Substitue 'color' with your highlight color
$ rake "install[greyshade]"
$ rake generate
至此,安装过程便已完成。
左侧的显示效果主要配置在_config.yml文件中。
###pages显示
Octopress默认只有Homepage和Archives两个导航菜单,不满足要求,我便又添加了"编程"、“Linux”、“所思所想”和“关于我”这几个。“关于我”的页面为静态页面,在source/blog/aboutme/下,其他的几个需要将相关的文章显示在相应的导航菜单下,便需做如下配置:
---
layout: category_index
title: Thinking
category: Thinking
---
这样后,只要new_post并且category为Thinking的页面都会集中在所思所想对应的页面显示。
…Linux下截图工具shutter的安装与配置
我一直使用的是Fedora17,自带的截图工具实在不敢恭维,但也就这样断断续续的用着,不过也用的不多。但今天突然鬼使神差的搜了下其他的截图工具,Google搜了下,发现好多提到shutter,既然这么多文章都提到,说明肯定着实不赖,便尝试了下。安装及配置如下:
###1.安装
安装过程很简单,执行下面命令即可:
#yum install shutter
###2.配置
QQ截图快捷键<ctrl>+<alt>+A用习惯了,所以也对shutter继续保留这个快捷键。具体配置方法如下:
在System Tools>System Settings>Keyboard>Shortcuts>Custom Shortcuts中添加了三个快捷键:
截图整个屏幕(shutter -f)
截图当前活动窗口(shutter -a)
截图选定区域(shutter -s)
具体配置及对应的快捷键设置参考下图:
