atijust's blog

技術的なこととか。

Mac OSX10.8(Mountain Lion)にrbenvでruby-1.9.3&ruby-2.0.0を導入する

OSX 10.8.2のMacBook Airにrbenvを使ってruby環境を構築したときのメモ。

まずはHomebrewrbenvruby-buildをインストールする。

$ brew install rbenv
$ brew install ruby-build

XcodeのCommand Line Toolsで入るコンパイラはllvm-gccだかllvm-clangらしく、1.9.3-p385をビルドしようとするとエラーがでる。 別途gccをインストールしてそれを使う必要があるようだ。

$ brew tap homebrew/dupes
$ brew install apple-gcc42
$ CC=/usr/local/bin/gcc-4.2 rbenv install 1.9.3-p385

2.0.0はCommand Line Toolsで入るコンパイラでもビルドできるみたい(たぶん)。

$ rbenv install 2.0.0-p0 

GitHub+Octopressでブログ構築

f:id:atijusts:20130304004328p:plain

GitHub+Octopressでブログを構築したときのメモ。

今回はGithub PagesUser& Organization Pagesにブログを設置する。

あらかじめアカウント名.github.comという名前のレポジトリを生成しておく。 サイトのURLはhttp://アカウント名.github.com/になる。 Ruby 1.9.3が必要。

$ git clone https://github.com/imathis/octopress.git atijust.github.com
$ cd atijust.github.com
$ rbenv global 1.9.3-p194
$ gem install bundler
$ rbenv rehash
$ bundle install
$ rake install
$ rake setup_github_pages
Enter the read/write url for your repository: git@github.com:atijust/atijust.github.com.git
$ rake generate
$ rake deploy

rake generate_deploy以下にサイトに公開されるファイルが生成されるようだ。 rake deploy_deployがmasterブランチにpushされ、 http://atijust.github.com/から参照できるようになる。

設定ファイルやポストはsourceブランチで管理するようなので別途pushしておく。

$ git add .
$ git commit -m '最初のコミット'
$ git push -u origin source

設定は_config.ymlで行う。

url: http://atijust.github.com
title: GitHubでブログのテスト
subtitle: Octopressでおためしブログ
author: atijust
simple_search: http://google.com/search
description:

ポストを作成するコマンドが用意されている。

$ rake new_post['octopress-install']
$ vi source/_posts/2013-03-03-octopress-install.markdown

画像ファイルはsource/imagesに月毎にディレクトリを作成して設置することにした。 rake generate_deploy以下にコピーされるので絶対パスで指定。

書き終わったら生成&デプロイ。

$ rake generate
$ rake deploy

ローカルでプレビューもできる。

$ rake preview

CentOS6.2にgollumをセットアップしたときのメモ

ドキュメントはMarkdownで書いてGitで管理しているのですが、Webインターフェースがあると便利だな、ということでgithub/gollum · GitHubをセットアップしてみました。

環境はCentOS6.2です。

まずはRubyのインストール。1.8.7以前でしか動かないので注意。

# yum install ruby
# yum install ruby-devel
# yum install rubygems

gollumの動作に必要なライブラリをインストール。

# yum -y install libxml2-devel
# yum -y install libxslt-devel

gollum本体のインストール。GFMに必要なgemもインストールします。

# gem install gollum
# gem install github-markdown

gollumはRedcarpetの1.Xでしか動かないらしい。

# gem uninstall redcarpet
# gem install redcarpet --version=1.17.2

これでインストールは完了です。

引数にgitリポジトリを指定して起動。

# gollum /path/to/doc.git

組み込みWebサーバがポート4576で起動します。

そっけない画面ですがプレビューとか検索とか使えて素敵です。

ホストとかポートはオプションで指定する感じ。

# gollum --help
Gollum is a multi-format Wiki Engine/API/Frontend.

Basic Command Line Usage:
  gollum [OPTIONS] [PATH]

        PATH                         The path to the Gollum repository (default .).

Options:
        --port [PORT]                Bind port (default 4567).
        --host [HOST]                Hostname or IP address to listen on (default 0.0.0.0).
        --version                    Display current version.
        --config [CONFIG]            Path to additional configuration file
        --irb                        Start an irb process with gollum loaded for the current wiki.
        --page-file-dir [PATH]       Specify the sub directory for all page files (default: repository root).
        --ref [REF]                  Specify the repository ref to use (default: master).

認証とかないのでローカル以外で使うときは注意が必要かな。

さくらのVPSに新しめのGitをインストール

対象とする環境はCentOS6.2 64bitです。

# rpm -q centos-release
centos-release-6-2.el6.centos.7.x86_64

標準のパッケージにもGitはありますが、新しいのが使いたかったのでRPMForgeからインストールしてみました。

まずはRPMForgeのインストール。

http://wiki.centos.org/AdditionalResources/Repositories/RPMForge

CentOSのwikiの通りにインストールします。

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -K rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -i rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

標準パッケージを置き換えないようにRPMForgeをデフォルトで無効にするよう推奨するサイトもあるみたいですが、最近のRPMForgeでは標準パッケージを置き換えるものはrpmforge-extrasに分離されており、これは最初からデフォルトで無効になっているので、特に気にする必要はないと思います。

どうしても気になる場合は/etc/yum.repos.d/rpmforge.repoを編集して無効にしましょう。

# sed -i -e "s/^enabled = 1$/enabled = 0/g" /etc/yum.repos.d/rpmforge.repo

Gitはrpmforge-extrasに収録されています。CentOS5のころはextrasではなかったのですが、CentOS6から標準パッケージにもGitが収録されるようになってextrasに移動したようです。

オプションでextrasを有効にしてインストールします。

# yum install --enablerepo=rpmforge-extras git

バージョンを確認してみる。

# git --version
git version 1.7.10

(1.7.10ってまだRCだったような・・・)

ComposerのクラスローダをAPCで高速化

$loader = require __DIR__.'/vendor/.composer/autoload.php';
spl_autoload_register(function ($class) use ($loader) {
    $file = apc_fetch($class);
    if ($file === false) {
        $file = $loader->findFile($class);
        apc_store($class, $file);
    }
    return $file;
}, true, true);

アプリ全体からすればクラスローダのオーバーヘッドは相対的に小さいであろうから、チューニングの意味があるかどうかは微妙なんだけど、取り敢えずおまじないってことで。今度ちゃんと計測してみよう。

(シンタックスハイライトがまだ実装されてない?はてなェ・・・)

コマンドラインのPHPでAPCを使う

CLIではデフォルトでAPCが無効になっている。

CLIでもAPCを使えるようにするにはphp.iniでapc.enable_cliを1に設定する。

apc.enable_cli = 1

APCのキャッシュはプロセスごとに独立しているのでCLIで使えたところで特に意味はない。スクリプトの実行が終わるたびにキャッシュは破棄されるので性能上の恩恵はない(ハズ)。使い所としてはテストやAPC関数の挙動確認くらい。

一時的に有効にするだけならコマンドラインオプションで設定してもよい。

php -d apc.enable_cli[=1] test.php

PHP: 実行時設定 - Manual
PHP: オプション - Manual

PHPの拡張モジュールをphpizeでビルドする方法

PECLではなくてphpizeで拡張モジュールをビルドしたときのメモ。

PHPは/opt/php-5.3.10以下にインストールされているとします。

$ wget http://pecl.php.net/get/memcached-2.0.1.tgz
$ tar xf memcached-2.0.1.tgz
$ cd memcached-2.0.1
$ /opt/php-5.3.10/bin/phpize
$ ./configure --with-php-config=/opt/php-5.3.10/bin/php-config
$ make
# make install

PHP: phpize で共有 PECL 拡張モジュールをコンパイルする方法 - Manual

基本はマニュアル通りなんだけど、複数バージョンのPHPをインストールしてる場合なんかは、configureオプションの--with-php-configに拡張モジュールをインストールしたいのと同じ場所にあるphp-configを指定してやる必要がある。php-configはPHPの設定情報を返すコマンド。拡張モジュールのインストール先はphp-configを元に決定される。インストールしたいのと同じ場所にあるphpizeを使うだけではダメ。