Glide Note

glidenote's blog

みんな、Vimpusherで便利なVim pluginを共有しようぜ!!

同僚の@banyanさんが作ったVimpusherがスゲー良いんです!!
何が良いかまとめると

すごい点

  • 今みんなが利用している、いわゆる流行のVim pluginを知ることが出来る。未知のPluginを発見出来る
  • トップエンジニアの使っているVim pluginが分かる。(開発環境が垣間見れる!!)
  • 他の人の.vimrcをリンクから辿って参考に出来る(カオスになりがちな.vimrcの記述方法を参考に出来る)

たとえばVimの整形Pluginといえば、Alignしか知らなかったんですが、 Vimpusherのおかげでvim-aligntaというものがあると知ることが出来ました。

そのほかにもVim Pluginを通じて、今どんな言語、技術にみんなが感心を持って 取り組んでいるのかも認識出来て素晴らしいです。(vim-coffee-script使ってる人多いすね)

俺が考える、あればもっと便利と思う機能(要望)

  • .vimrcを直接入力させ集計(.vimrcを非公開にしている人も結構いると思うので)
  • ユーザ検索
  • ホッテントリ的な人気急上昇Pluginの表示(RSSとかあるとうれしい)
  • この画面Bundle 'hogemoge.vim'とか.vimrcにすぐ記載出来る表記の表示

Vimpusherは仕組み的にVim使ってる人が、.vimrcを登録していかないと統計としては廃れていってしまうので、 魅力あるサービス成長のためにみんなで広めていきましょう!!

ちなみに私のVimpusherはこちら

ステマなので、ユーザが増えたら@banyanさんから寿司を奢ってもらいます

パケットリピータstoneでVNC接続を中継する

普段MacとLinuxを利用しているので、ほとんどがsshしてコマンド操作(CUI)で用が足りるんですが、 たまに遠隔地にあるWindows上でGUI操作をしないといけないことがあるので、stoneとvncで解決させました。 いろいろと方法はあると思いますが、stoneが一番手軽だったので。
(普段利用しているUT-VPNはWin用とLinux用のクライアントはあるんですが、Mac用クライアントが無いので、こんな面倒なことをしてます。)

現在の状態

  • MacbookAirとServerAは同じネットワーク(192.168.11.0/24)
  • ServerAとWindowsPCはVPN(UT-VPN)環境を構築済みで通信可能(172.16.100.0/24)
  • Macbook AirとWindowsPCは直接通信不可(WindowsPCは遠隔地でNAT配下)

環境(OS、IPアドレス)

  • MacbookAir(Lion) 192.168.11.20
  • ServerA(Fedora16) 192.168.11.30,172.16.100.50
  • WindowsPC(XP) 172.16.100.10

実現したいこと

  • stoneでパケットを中継して、MacBookAirからWindowsPCへのVNC接続を可能にする
  • MacbookAirからServerAの5910ポート(192.168.11.30:5910)にVNC接続すると、stoneで中継されWindowsPCの5900ポート(172.16.100.10:5900)に接続される
  • VPN(UT-VPN)上の通信で既に暗号化されているので、今回stoneでSSL化の必要は無し

stoneの導入

stoneはServerA(Fedora16)に導入

1
2
3
4
5
6
7
8
9
mkdir ~/src ~/bin
cd ~/src
wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
tar zxvf stone-2.3e.tar.gz
cd stone-2.3d-2.3.2.7
curl -o stone.diff -LO "http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=stone.diff;att=1;bug=517574"
patch < stone.diff
make linux
cp stone ~/bin

デフォルトのままだとmake linuxでこけるので、ここのpatchも適用してます。patchの内容は下記のような感じで-D_GNU_SOURCEを追加している感じ

stoneの起動

5910ポートで待ち受けて、WindowsPC(172.16.100.10)の5900ポートに中継させます

1
2
3
4
~/bin/stone 172.16.100.10:5900 5910

Jan  7 12:33:43.735910 3078318336 start (2.3e) [11176]
Jan  7 12:33:43.759207 3078318336 stone 3: colinux:rfb <- 0.0.0.0:cm

常用するなら、supervisordとかで起動を管理するのがいいと思いますが、一時的に利用するだけなので、フォアグランドで起動。

MacbookAirからVNC接続

Macの画面共有だとうまく接続できないので、Chicken of the VNCを利用。
うまくVNC接続出来ました。

参考

Rails3.1 Could not find a JavaScript runtime.

普段業務で使ってる環境以外も勉強しないとやばいなーと思って、Railsを触ってるんですが、 Ruby力も、Rails力もなさ過ぎでいきなりつまずいたのでメモ。

環境

  • ruby 1.9.2p290 (2011-07-09 revision 32553) [x86 64-linux]
  • Rails 3.1.3

rails newで新規アプリを作成

1
2
3
rails new hoge
cd hoge
rake about

rake aboutで環境を確認すると

1
2
3
4
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.

(See full trace by running task with --trace)

JavaScriptのランタイムが検出できないとのエラーとのエラー。エラーでググってみると execjstherubyracerを導入すれば解決するとのことなので導入

1
2
3
echo "gem 'execjs'" >> Gemfile
echo "gem 'therubyracer'" >> Gemfile
bundle install

再度rake aboutを実行すると

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
rake about

About your application's environment
Ruby version              1.9.2 (x86_64-linux)
RubyGems version          1.8.10
Rack version              1.3
Rails version             3.1.3
JavaScript Runtime        therubyracer (V8)
Active Record version     3.1.3
Action Pack version       3.1.3
Active Resource version   3.1.3
Action Mailer version     3.1.3
Active Support version    3.1.3
Middleware                ActionDispatch::Static, Rack::Lock, #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x0000001c986b58>, Rack::Runtime, Rack::MethodOverride, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::RemoteIp, Rack::Sendfile, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, ActionDispatch::Head, Rack::ConditionalGet, Rack::ETag, ActionDispatch::BestStandardsSupport
Application root          /home/akira/work/hoge
Environment               development
Database adapter          sqlite3
Database schema version   

ちゃんと動作するようになりました。今年はRuby力とRails力を鍛えていきたいと思います。

参考

Shellでヒアドキュメント利用時に変数展開を抑制する

zshやbashでヒアドキュメントを利用するときに、いつも忘れてやらかすのでメモ

変数展開してしまう例

1
2
3
4
5
6
7
cat << EOF >/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF
1
2
3
4
5
6
7
cat /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos///
gpgcheck=0
enabled=1

$releasever$basearchが変数として展開されてしまう。

変数展開しない例

区切りシンボルをシングルクオート'かバッククオート"することで 変数展開を抑制出来る。

1
2
3
4
5
6
7
cat << 'EOF' >/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF
1
2
3
4
5
6
7
cat /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

参考記事

OctopressでRelated Posts(関連エントリー)を表示させるようにした

Octopressというかjekyll自体に関連エントリーを表示させるsite.related_postsというTemplate Dataがあるんですが、 利用してみると、内容的に似ている関連エントリーを表示するわけでは無く、単に最近のエントリーを表示するだけ。
設定の問題なのかと思って調べていたら、

に同様な記載があり、どうやらそういう挙動のようで、その挙動を改善するプラグインがあったので導入

関連エントリーを表示させるために、related_posts-jekyll_pluginを利用

1
2
3
4
mkdir ~/tmp
cd ~/tmp
git clone https://github.com/LawrenceWoodman/related_posts-jekyll_plugin.git
cp related_posts-jekyll_plugin/_plugins/related_posts.rb ~/octopress/plugins/

octopressのpluginsディレクトリのパス~/octopress/pluginsの部分は自分の環境に読み替えて下さい。 ソースを見ると関連したカテゴリーのエントリーを、最新の順に表示してくれるようになってます。 つまり個々のエントリーでちゃんとカテゴリーを指定しないと機能してくれません。

octopress/source/_includes/post/related_posts.html を用意

下記のような関連エントリー表示用のhtmlを作成。
limitを指定しないと、同じカテゴリーのエントリーが全部表示されてしまうので、limit:5で制限。

octopress/source/_layouts/post.html の修正

上記で作成したhtmlをpost.htmlでinclude

これで個々のエントリーにRelated Postsとして関連エントリーが表示されるようになりました。

参考