cutmail's blog

write the code

Vagrantのpluginをインストールしようとして、nokogiriのインストールエラーで止まってしまう件の対応

DigitalOcean上にVMを立てていろいろやるのを、Vagrantから実行したかった。

vagrant-digitaloceanプラグインをインストール。

$ vagrant plugin install vagrant-digitaloceal

ところが、

$ vagrant plugin install vagrant-digitaloceal
Installing the 'google' plugin. This can take a few minutes...
Building nokogiri using packaged libraries.
Building libxml2-2.8.0 for nokogiri with the following patches applied:
        - 0001-Fix-parser-local-buffers-size-problems.patch
        - 0002-Fix-entities-local-buffers-size-problems.patch
        - 0003-Fix-an-error-in-previous-commit.patch
        - 0004-Fix-potential-out-of-bound-access.patch
        - 0005-Detect-excessive-entities-expansion-upon-replacement.patch
        - 0006-Do-not-fetch-external-parsed-entities.patch
        - 0007-Enforce-XML_PARSER_EOF-state-handling-through-the-pa.patch
        - 0008-Improve-handling-of-xmlStopParser.patch
        - 0009-Fix-a-couple-of-return-without-value.patch
        - 0010-Keep-non-significant-blanks-node-in-HTML-parser.patch
        - 0011-Do-not-fetch-external-parameter-entities.patch
************************************************************************
IMPORTANT!  Nokogiri builds and uses a packaged version of libxml2.

If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:

    gem install nokogiri -- --use-system-libraries

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install

However, note that nokogiri does not necessarily support all versions
of libxml2.

For example, libxml2-2.9.0 and higher are currently known to be broken
and thus unsupported by nokogiri, due to compatibility problems and
XPath optimization bugs.
************************************************************************
Bundler, the underlying system Vagrant uses to install plugins,
reported an error. The error is shown below. These errors are usually
caused by misconfigured plugin installations or transient network
issues. The error from Bundler is:

An error occurred while installing nokogiri (1.6.2.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.2.1'` succeeds before bundling.

という感じのnokogiriのインストールエラーが表示されてしまった。 システムに入っているものとは違うバージョンのnokogiriを使おうとしているようなので、 ググったところ、

http://stackoverflow.com/questions/23621717/vagrant-plugin-and-nokogiri-install-issue

システムに入っているnokogiriを使うNOKOGIRI_USE_SYSTEM_LIBRARIES=1というオプションが!

再度オプションを付けて試したところ、無事インストールできた。

$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 vagrant plugin install vagrant-digitalocean                                                                                      
Installing the 'vagrant-digitalocean' plugin. This can take a few minutes...
Installed the plugin 'vagrant-digitalocean (0.5.4)'!

Retrobotはじめました

@mirakui さんの 1年前の自分と暮らす - 昼メシ物語 を見てretrobotを導入してみた。

@cutmail_retro

現実は厳しい>

Titanium Mobile2.1.3でRetina 4-inchかどうかを判別する

Titanium 2.xからレイアウトエンジンが変更されましたが、画面の高さによってViewの高さを変えたい場合があるかと思います。

Titanium 1.x系では

var imageViewHeight;
if (win.height  == 549) {
  imageViewHeight = 548;
} else {
  imageViewHeight = 460;
}

でWindowのheightが取得できましたが、2.x系ではwin.heightでは正しい高さが返ってこないようになっています。

2.x系でRetina 4-inchを判別したい場合は、Ti.Platform.displayCaps.platformHeightで、Windowの高さが取得できました。

こんな感じで。

var isRetina4Inch = function() {
  return Ti.Platform.displayCaps.platformHeight == 568;
};

var imageViewHeight;
if (isRetina4Inch()) {
  imageViewHeight = 548;
} else {
  imageViewHeight = 460;
}

How do I reference iPhone 5-specific images? (Not the Default-568h@2x.png image) » Community Questions & Answers » Appcelerator Developer Center

vimのスワップファイルの出力先を変更する

gitなどでバージョン管理をしていて、vimでファイルを開いたりすると**.swpてきなファイルが勝手に作られたりして、

# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       foo/hoge.js.swp
no changes added to commit (use "git add" and/or "git commit -a")

こんな感じで、gitに捕捉されちゃったりしたので、出力先を変えてみました。

あらかじめ出力先のディレクトリを作っておいて、

~/.vimrcに

# swp output directory
set directory=~/.vim/tmp

と書いておけばおkです。

2012年05月14日のツイート

2012年05月13日のツイート