Octopressで

1
$ rake generate

した時、コードを記載した部分でエラーになることがあった。

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
28
29
30
31
32
$ rake generate
## Generating Site with Jekyll
   remove .sass-cache/
   remove source/stylesheets/screen.css
   create source/stylesheets/screen.css
Configuration from /Users/user/Dropbox/documents/git/MyGit/octopress/_config.yml
Building site: source -> public
/Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/pygments.rb-0.3.4/lib/pygments/popen.rb:354:in `rescue in get_header': Failed to get header. (MentosError)
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/pygments.rb-0.3.4/lib/pygments/popen.rb:335:in `get_header'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/pygments.rb-0.3.4/lib/pygments/popen.rb:232:in `block in mentos'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/pygments.rb-0.3.4/lib/pygments/popen.rb:206:in `mentos'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/pygments.rb-0.3.4/lib/pygments/popen.rb:189:in `highlight'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/pygments_code.rb:24:in `pygments'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/pygments_code.rb:14:in `highlight'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/backtick_code_block.rb:37:in `block in render_code_block'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/backtick_code_block.rb:13:in `gsub'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/backtick_code_block.rb:13:in `render_code_block'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/octopress_filters.rb:12:in `pre_filter'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/octopress_filters.rb:28:in `pre_render'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/post_filters.rb:112:in `block in pre_render'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/post_filters.rb:111:in `each'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/post_filters.rb:111:in `pre_render'
        from /Users/user/Dropbox/documents/git/MyGit/octopress/plugins/post_filters.rb:166:in `do_layout'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/lib/jekyll/post.rb:195:in `render'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/lib/jekyll/site.rb:200:in `block in render'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/lib/jekyll/site.rb:199:in `each'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/lib/jekyll/site.rb:199:in `render'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/lib/jekyll/site.rb:41:in `process'
        from /Users/user/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/jekyll-0.12.0/bin/jekyll:264:in `<top (required)>'
        from /Users/user/.rbenv/versions/1.9.3-p374/bin/jekyll:23:in `load'
        from /Users/user/.rbenv/versions/1.9.3-p374/bin/jekyll:23:in `<main>'

なんかコードsyntaxにpythonを使ってるみたいで、pythonのバージョンが3系やとダメみたい。 そこで、「octopress」用に「python2.7」でvirtualenv環境を作成してあげる。

virtualenv環境のインストールは先日の記事 参照。

1
2
$ mkvirtualenv -p /usr/bin/python --distribute octopress
$ workon octopress

これで、システムのpython (OSX Mountain Lionではpython2.7) の環境になる。 そこで rake generate すれば、無事エラーはなくなる。

元に戻るには、

1
$ deactivate

参考 Octopress on Arch Linux - wongdev.com

python環境構築。

pythonzのインストール。

1
$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash

.zshenvに追記。

1
2
3
4
5
6
7
8
9
10
11
12
# pythonz
if [ -s $HOME/.pythonz/etc/bashrc ]; then
    source $HOME/.pythonz/etc/bashrc
    # use python 3.2.3
    if [ -d "$HOME/.pythonz/pythons/CPython-3.2.3/bin" ]; then
        export PATH=$HOME/.pythonz/pythons/CPython-3.2.3/bin:$PATH
        export VIRTUALENVWRAPPER_PYTHON=$HOME/.pythonz/pythons/CPython-3.2.3/bin/python
        export VIRTUALENVWRAPPER_VIRTUALENV=$HOME/.pythonz/pythons/CPython-3.2.3/bin/virtualenv
        export WORKON_HOME=$HOME/.virtualenvs
        source $HOME/.pythonz/pythons/CPython-3.2.3/bin/virtualenvwrapper.sh
    fi
fi

インストール出来るリスト

1
$ pythonz list -a

インストール

1
$ pythonz install 2.7.3 3.2.3

easy_install と pip とvirtualenv のインストール

1
2
3
4
5
6
7
8
$ source ~/.zshenv
$ mkdir ~/.distribute_setup_py
$ cd ~/.distribute_setup_py
$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ source ~/.zshenv
$ easy_install pip
$ pip install virtualenv virtualenvwrapper

pythonz でインストールした python でセットアップすると、そのpython のバージョンに easy_install と pip を入れてくれる。

1
2
3
4
5
6
$ which easy_install
/Users/yuki/.pythonz/pythons/CPython-3.2.3/bin/easy_install
$ which pip
/Users/yuki/.pythonz/pythons/CPython-3.2.3/bin/pip
$ which virtualenv
/Users/yuki/.pythonz/pythons/CPython-3.2.3/bin/virtualenv

参考

pythonz で python 3.2.3 を インストール - KRAKENBEAL RECORDS

pythonz + virtualenv + virtualenvwrapper でPython開発環境を作ってみる on MacOSX10.8 | ふぃふメモ

vimのquickrunでcoffeescriptをコンパイルする設定

複数ファイルをまとめてコンパイルしたいので、依存するファイルは、ファイルの 先頭らへんで擬似的に’import’と記述しておく。

1
2
3
4
5
# import '_lib/_lib.coffee'
# import '_lib/FileSystem.coffee'
# import '_lib/ShellSystem.coffee'

console.log "hello"

みたいに記述された ‘test.coffee’というソース上で’<leader>r’ 実行すると、

1
coffee -j test.js -cb _lib/_lib.coffee _lib/FileSystem.coffee _lib/ShellSystem.coffee test.coffee

が実行される。

macでターミナルを使用する場合、iTerm2が便利。

しかし、iTerm2上のvimで日本語を使う時、Insertモードから抜けると自動でIMEを OFFにしてくれない点が非常に不便。

これを解決するのが、「KeyRemap4Macbook」。 「KeyRemap4Macbook」では、キーが押された時にそのキーを他のキーにリマップすることが出来る。

標準でもかなり多くのリマップが用意されているが、それ以外にも自分で「private.xml」に定義することが出来る。

KeyRemap4Macbookの「private.xml」に以下の定義をした。

SubLimeText2とかの設定もあるけど、使ったことはありません・・・。 これはパクリ(参考)元の設定のまま。

参考:

Vimで挿入モードから抜ける時に英数入力に切り替える #Mac #Vim - Qiita

前回の記事で TypeScriptでのQuickRunの設定を書いたが、どうせならreference pathから自動でコンパイルオプションを生成するようにしたら いんじゃね?って思って変更しました。

TypeScriptファイルの先頭15行以内にあるreferenceを読み込んで、コンパイルオプションに追加してます。

例) 先頭15行以内に以下が含まれてる場合

1
2
///<reference path="_lib.ts"/>
///<reference path="_file.ts"/>

コンパイルオプションは以下になる

1
'%c --nolib %s _lib.ts _file.ts --out %s:p:r.js'

ちなみに’–nolib’ を指定しているのは標準の’lib.d.ts’を拡張しているので、標準のは読み込んで欲しくないからです。

また、最終的にはwsh(JScript)として実行したいため、’OP:’の行指定によりコンパイル後のjsファイルに JScriptとして実行するためのヘッダファイルを付加しています。

例)

1
// OP: "pushd"

の場合、下記のヘッダがjsファイルに付加され、拡張子が’cmd’になります。

1
2
3
4
5
6
7
@if(0)==(0) ECHO OFF
    pushd "%~dp0" > nul
    CScript.exe //NoLogo //E:JScript "%~f0" %*
    popd > nul
pause
GOTO :EOF
@end
1
// OP: "nopushd"

上記の場合、下記のヘッダがjsファイルに付加されます。

1
2
3
4
5
@if(0)==(0) ECHO OFF
    CScript.exe //NoLogo //E:JScript "%~f0" %*
pause
GOTO :EOF
@end

quickrunの設定をした。

quickrunの設定には ‘osyo-manga/shabadou.vim’ がとても便利です。 WindowsのJScriptをTypeScriptで記述するための設定。 ライブラリ的なのは、全て “_lib.ts” に記述し、実行ファイルソース上で “\r” でquickrun !

“test.ts” で quickrunすると、”_lib.ts” も含めて、”test.cmd” を生成する。

octopressのテーマをデフォルトから変更する手順

使用出来るテーマ一覧は以下に記載

3rd Party Octopress Themes · imathis/octopress Wiki

今回はここにある

roberto/oct2-orange · GitHub

を使用。

1
2
3
% cd octopress
% git clone git://github.com/roberto/oct2-orange.git .themes/oct2-orange
% rake install\['oct2-orange'\]

後は、_config.ymlに asides/nav.html を追加。

1
default_asides: [asides/nav.html, asides/recent_posts.html ....

年末大掃除、zshの設定をoh-my-zshを基準に設定し直した。

oh-my-zshの導入

まず、自分でカスタマイズ出来るようにgithub上で、以下をフォーク

robbyrussell/oh-my-zsh · GitHub

フォークした自分のoh-my-zshをclone (clone先はデフォルトでは、~/.oh-my-zsh にしないといけない)

1
% git clone git@github.com:yuyunko/oh-my-zsh.git ~/.oh-my-zsh

設定をシンボリックリンク

1
% ln -s ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

設定ファイルの初期値は以下の通り

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
28
29
30
31
32
33
34
35
36
37
38
39
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="robbyrussell"

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"

# Comment this out to disable bi-weekly auto-update checks
# DISABLE_AUTO_UPDATE="true"

# Uncomment to change how many often would you like to wait before auto-updates occur? (in days)
# export UPDATE_ZSH_DAYS=13

# Uncomment following line if you want to disable colors in ls
# DISABLE_LS_COLORS="true"

# Uncomment following line if you want to disable autosetting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment following line if you want red dots to be displayed while waiting for completion
# COMPLETION_WAITING_DOTS="true"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git)

source $ZSH/oh-my-zsh.sh

# Customize to your needs...

最後の行の「Customize to your needs」の後に自分の設定を追記していく。

テーマは、上記、「ZSH_THEME」で設定する。

.oh-my-zsh/themes に自分で「mytheme.zsh-theme」という拡張子で設定ファイルを記述し、 上記設定ファイルに「ZSH_THEME=mytheme」とすると、読み込んでくれる。

僕はデフォルトの”robbyrussell”のテーマにclear-code/zsh.d · GitHubさんの 設定をプラスさせて貰ったようなのを利用。

TypeScriptがなにやら楽しそう。 Macでも導入出来るっぽい。

TypeScriptを導入するには、node.jsが必要。 今のところzsh使いに最適な方法は nodebrew を使う方法みたい。

curl でパイプにつないで直接入れる方法もあるっぽいけど、自分はこういうのは自分の設定ファイルの submoduleにいれときたい(忘れる)ので、submodule add してからインストール。

1
2
3
4
5
6
7
8
9
10
11
$ git submodule add https://github.com/hokaccha/nodebrew.git nodebrew
$ cd nodebrew
$ perl nodebrew setup
fetching nodebrew...
install nodebrew in $HOME/.nodebrew

========================================
Add path:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

記述に従い、.zshenvに追加。

1
2
3
4
# nodebrew
if [[ -f ~/.nodebrew/nodebrew ]]; then
    export PATH=$HOME/.nodebrew/current/bin:$PATH
fi

使い方は、nodebrewコマンドを打てばわかる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ nodebrew
nodebrew 0.6.0

Usage:
    nodebrew help                       Show this message
    nodebrew install <version>          Download and install a <version> (compile from source)
    nodebrew install-binary <version>   Download and install a <version> (binary file)
    nodebrew uninstall <version>        Uninstall a version
    nodebrew use <version>              Use <version>
    nodebrew list                       List installed versions
    nodebrew ls                         Alias for `list`
    nodebrew ls-remote                  List remote versions
    nodebrew ls-all                     List remote and installed versions
    nodebrew alias <key> <version>      Set alias to version
    nodebrew unalias <key>              Remove alias
    nodebrew clean <version> | all      Remove source file
    nodebrew selfupdate                 Update nodebrew
    nodebrew migrate-package <version>  Install global NPM packages contained in <version> to current version

Example:
    nodebrew install v0.6.0     Install a specific version number
    nodebrew use v0.6.0         Use a specific version number

最新をインストール

1
2
3
4
5
6
$ nodebrew install latest
$ nodebrew list
v0.9.4

current: none
$ nodebrew use v0.9.4

これでnpmコマンドも使用出来るようになっているので、npmでTypeScriptをインストール

1
$ npm install -g typescript

TypeScript -> JavaScriptの変換

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ tsc
Syntax:   tsc [options] [file ..]

Examples: tsc hello.ts
          tsc --out foo.js foo.ts
          tsc @args.txt

Options:
  -c, --comments  Emit comments to output
  --declaration   Generates corresponding .d.ts file
  -e, --exec      Execute the script after compilation
  -h, --help      Print this message
  --module KIND   Specify module code generation: "commonjs" (default) or "amd"
  --nolib         Do not include a default lib.d.ts with global declarations
  --out FILE      Concatenate and emit output to single file
  --sourcemap     Generates corresponding .map file
  --target VER    Specify ECMAScript target version: "ES3" (default), or "ES5"
  -w, --watch     Watch output files
  @<file>         Insert command line options and files from a file.

$ tsc test.ts

上記で同じディレクトリにtest.jsが出来る。

wsh の定義ファイル(d.ts)が欲しい

1L〜4LまでがJScriptをバッチファイルとして実行するイディオム

6L〜はファイルを扱う時用、その後はExcelを扱う時用の関数。

いろいろ出来そう。

参考

JScript でハマる日々 - m2

Javascriptプログラミング