CodePlay

Method_missing Error

竟然被一个问题坑了很久。 错误提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## Generating Site with Jekyll
unchanged sass/screen.scss
Configuration from /home/xxxxxx/yyyyy.github.com/_config.yml
Building site: source -> public
/home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/rubypython-0.5.1/lib/rubypython/rubypyproxy.rb:198:in `method_missing':
ClassNotFound: no lexer for alias 'ssh' found (RubyPython::PythonError)
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/pygments.rb-0.1.3/lib/pygments/ffi.rb:136:in `lexer_for'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/pygments.rb-0.1.3/lib/pygments/ffi.rb:92:in `highlight'
    from /home/xxxxxx/yyyyy.github.com/plugins/pygments_code.rb:24:in `pygments'
    from /home/xxxxxx/yyyyy.github.com/plugins/pygments_code.rb:14:in `highlight'
    from /home/xxxxxx/yyyyy.github.com/plugins/backtick_code_block.rb:37:in `block in render_code_block'
    from /home/xxxxxx/yyyyy.github.com/plugins/backtick_code_block.rb:13:in `gsub'
    from /home/xxxxxx/yyyyy.github.com/plugins/backtick_code_block.rb:13:in `render_code_block'
    from /home/xxxxxx/yyyyy.github.com/plugins/octopress_filters.rb:12:in `pre_filter'
    from /home/xxxxxx/yyyyy.github.com/plugins/octopress_filters.rb:27:in `pre_render'
    from /home/xxxxxx/yyyyy.github.com/plugins/post_filters.rb:112:in `block in pre_render'
    from /home/xxxxxx/yyyyy.github.com/plugins/post_filters.rb:111:in `each'
    from /home/xxxxxx/yyyyy.github.com/plugins/post_filters.rb:111:in `pre_render'
    from /home/xxxxxx/yyyyy.github.com/plugins/post_filters.rb:166:in `do_layout'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/post.rb:189:in `render'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/site.rb:193:in `block in render'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/site.rb:192:in `each'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/site.rb:192:in `render'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/site.rb:40:in `process'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/bin/jekyll:250:in `<top (required)>'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/bin/jekyll:19:in `load'
    from /home/xxxxxx/.rvm/gems/ruby-1.9.2-p290/bin/jekyll:19:in `<main>'

这个错误真的太假了。开始看到ClassNotFound: no lexer for alias ‘ssh’ found 这一段,以为是连接不上SSH。其实是source/_post/里markdown文件里用了一个没有定义过的code标记:

```ssh
abc defg 
```

Mutiple SSH Keys

大部分人只用一个身份去连接git(github.com)。也就只用到一个ssh key。有时候可能会想玩一些不同的东西,建立两个或者两个以上的用户。 但在连接的时候就有问题了,一个用户对应一个SSH key。现在就来设置一下多用户所要用到的多个SSH keys。

假设原本已经有了一个ssh key,现在还是一样用ssh-keygen -t rsa -C 'secondUser@mail.com' 在生成文件时候可以自己输入想要的文件名。后面的,都跟第一次生成密钥文件时候是一样的。

密钥生成了,就要加进SSH agent里去。ssh-add ~/.ssh/id_rsa_2 这时,哪个KEY对应哪个连接还要分清楚。 在~/.ssh/建立一个config文件。包含这些内容:

1
2
3
4
5
6
7
8
9
10
11
# Default github user(first@mail.com)
Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa

# second github user(second@mail.com)
Host github-second
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa_2

第一个库加进来,可能是git remote add origin git@github.com:githubUser/myProject1.git这样加载的。 第二库可以这样连接:

1
2
#这里github-second是在config里设置的连接名字
git remote add myProject1 git@github-second:githubUser2/myProject1.git

另外,在另一个库的目录下面设置登录的用户名和邮箱。 原来设置的可能是全局的用户名:

1
2
git config --global user.name "userName"
git config --global user.email "email@email.com"

现在在第二个库的目录里可以设置一个只有进入这个目录才会启用的用户名:

1
2
3
#默认已经 cd myProject1 
git config  user.name "userName2"
git config  user.email "email2@email.com"

然后再连接。ssh -T git@github-second这里也是不同了。

Apache服务器设置多站点

在本机的Windows下设置的。

  1. 随便写个域名,如 h.co;
  2. 在hosts文件里,添加127.0.0.1 h.co;
  3. 在httpd.conf文件里添加:
1
2
3
4
5
6
7
8
9
10
11
12
13
#这个是把域名指到对应文件夹
<VirtualHost 188.188.8.254>
DocumentRoot "G:\www"
ServerName h.co
</Virtualhost>

#这个是给指定的文件夹一定的权限
<Directory "G:\www">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

如果有多个域名,就多添加几个类似的内容就行了。

Linux Mint安装极点五笔

按官方的说明安装ibus,但ibus没有提供极点五笔。

1
2
3
4
5
$ sudo add-apt-repository ppa:shawn-p-huang/ppa
$ sudo apt-get update
$ sudo apt-get install ibus ibus-pinyin
$ sudo apt-get install ibus-gtk ibus-qt4
$ im-switch -s ibus

所以还要安装ibus-tablesudo apt-get install ibus-table,再去下载极点五笔的码表并安装。

[转]Linux Mint 12 - iBus没有输入法图标的问题

裝好Linux Mint跟iBus後發現切換輸入法時iBus的系統匣顯示的是禁止符號的圖示,我使用的解決方法是在 /usr/share/ibus/ui/gtk/panel.py這個檔案中加入下面+號後兩行的程式碼(因為是Python語法所以要注意程式碼前的空格數):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def state_changed(self):
    if not self.__focus_ic:
        return

    enabled = self.__focus_ic.is_enabled()
    self.__language_bar.set_enabled(enabled)

    if enabled == False:
        self.reset()
        self.__set_im_icon(ICON_KEYBOARD)
        self.__set_im_name(None)
    else:
        engine = self.__focus_ic.get_engine()
        if engine:
+               pixbuf = gdk.pixbuf_new_from_file(engine.icon)
+               gtk.icon_theme_add_builtin_icon(engine.icon, 0, pixbuf)
            self.__set_im_icon(engine.icon)
            self.__set_im_name(engine.longname)
        else:
            self.__set_im_icon(ICON_KEYBOARD)
            self.__set_im_name(None)

這樣系統匣的輸入法圖示就可以正常顯示了

原文

另,如果ibus的提示框不跟随,可能是ibus-gtk3没有安装。

Vim新建文件的模板

在新建文件时,如果有针对该文件扩展名的模板存在,那么模板中的内容,将被自动插入进新文档中。将模板以正确的扩展名保存至Vim/myTemplate目录中。如果没有myTemplate目录,就创建一个。在Windows中,将模板文件html.tpl保存到$Vim/vimfiles/myTemplate/目录下;而在Mac/Liunx/Unix中,则保存模板文件至~/.vim/myTemplate/

.vimrc_vimrc文件中,修改一些配置:

1
2
#Windows:
autocmd! BufNewFile * silent! 0r $VIM/vimfiles/myTemplate/%:e.tpl
1
2
#Mac/Liunx/Unix:
autocmd! BufNewFile * silent! 0r ~/.vim/myTemplate/%:e.tpl

:new test.html / :tabnew test.html新建一个文件的时候,就会自动添加模板中的代码。

另外,在RedHat系列的系统(Fedora, CentOS等)里,gVim安装包叫vim-X11。

重新安装grub

前几天换了主机,那个主机的CPU(E6500)支持虚拟化。原来的CPU是E5200。整个硬盘换过去。上面有三个操作系统。但WIN7直接是打不开,Ubuntu 和 Linux Mint打开以后不显示鼠标,都是显卡驱动的问题。重装WIN7,但WINDOWS不引导其他操作系统。只能再装一次GRUB去引导其他两个LINUX。

用Ubuntu的Live CD进去,找好Ubuntu的所在分区。

1
2
3
sudo -i
mount /dev/sda2 /mnt
grub-install --root-directory=/mnt /dev/sda

/dev/sda2是Linux所在分区,要挂载到Live CD启动的虚拟机。

Octopress记录

按照octopress的指导,一般自己的库的主分支(master)是octopress最后生成的静态页面。整个后台都放到source分支去。octopress整个后台都是在客户机这里的,跟wordpress的不同。

换了新机器,把库克隆下来。进入目录,切换分支到source,绝大部分的修改和更新都是这里可以完成。暂时感觉是这样,没碰到要直接在生成的页面上修改的。在切换分支后如果直接用octopress一些相关命令如:rake new_post['title'],会提示安装。因为在刚进入这个目录时是主分支,没有备置文件,也就没启用octopress的备置文件了。切换分支source后,换到其他目录再回来,就会提示是否启用那个备置文件。确定一下就可以了。

新的地方去更新网站页面,也要先建立下连接。rake setup_github_pages,输入自己的库的地址:git@github.com:githubUser/repositoryID.git。后面就是跟第一次使用时的一样可以rake generaterake deploy

octopress系统会跟踪文件的修改,比如你在预览(preview)的时候,改了样式表,刷新页面就可以看到效果了。所有样式都可以在sass这个文件夹里。要让字体显示是“微软雅黑”,可以在sass/custom/_font.scss把注释“//”去掉,再修改,$sans: "Microsoft YaHei", "Optima", sans-serif;。把所有链接的下划线去掉,这些链接的颜色已经足于识别了。在sass/base/_theme.scss修改。

Octopress记录

按照octopress的指导,一般自己的库的主分支(master)是octopress最后生成的静态页面。整个后台都放到source分支去。octopress整个后台都是在客户机这里的,跟wordpress的不同。

换了新机器,把库克隆下来。进入目录,切换分支到source,绝大部分的修改和更新都是这里可以完成。暂时感觉是这样,没碰到要直接在生成的页面上修改的。在切换分支后如果直接用octopress一些相关命令如:rake new_post['title'],会提示安装。因为在刚进入这个目录时是主分支,没有备置文件,也就没启用octopress的备置文件了。切换分支source后,换到其他目录再回来,就会提示是否启用那个备置文件。确定一下就可以了。

新的地方去更新网站页面,也要先建立下连接。rake setup_github_pages,输入自己的库的地址:git@github.com:githubUser/repositoryID.git。后面就是跟第一次使用时的一样可以rake generaterake deploy

octopress系统会跟踪文件的修改,比如你在预览(preview)的时候,改了样式表,刷新页面就可以看到效果了。所有样式都可以在sass这个文件夹里。要让字体显示是“微软雅黑”,可以在sass/custom/_font.scss把注释“//”去掉,再修改,$sans: "Microsoft YaHei", "Optima", sans-serif;。把所有链接的下划线去掉,这些链接的颜色已经足于识别了。在sass/base/_theme.scss修改。

Proxychains

ProxyChains 很好用,配合WallProxy的话。

在搭建OctoPress的时候,要下载一个100K的文件,却一直下载失败,发现是连接被重置了很多。先是想用VPN,但没找到好用的,只能找其它代理了。网上找到了proxyChains,wallProxy刚好可以用socks代理。配合一起用了一段时间,感觉很不错。在正常的命令前加个proxychains就行了,proxychains git clone http://github.com/joyent/node.git

在Ubuntu里可以直接安装,其他系统就没试过。

1
$sudo apt-get install proxychains

安装好后修改proxychains的配置文件sodo vim /etc/proxychains.conf,把最后一行改成自己要用的代理。

1
socks5 127.0.0.1 8086