「 未分類 」一覧

OS Xへのrailsのインストールではまった件

OS Xにrailsをインストールしようとしたら、初っぱなからつまずいたので対応をメモっておく。

環境

OS X EI Capitan 10.11.5
rbenv 1.0.0
ruby 2.2.5

問題点

rbenvで構成したruby 2.2.5 でrailsをインストールしようとしたところ、nokogiriのインストールで問題が発生しました。

ERROR:  Error installing nokogiri:
	ERROR: Failed to build gem native extension.

Building nokogiri using system libraries.
ERROR: cannot discover where libxml2 is located on your system. please make sure `pkg-config` is installed.

調査したところ、nokogiriのインストールにはlibxml2、libxslt、libiconvが必要とのこと。

対応

libxml2、libxslt、libiconvをbrewで入れるのですが、またまたややこしいことに、libconvはHomebrewの正式リポジトリから外れているので、tapで公式以外のリポジトリを追加する必要があります。

$ brew tap homebrew/dupes
$ brew install libxml2 libxslt libiconv
$ brew link --force libxml2
$ brew link --force libxslt

そして、一旦nokogiriだけをインストールしてみる。

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

これがうまくいったら、railsをインストールする。

gem install rails -v 4.2.2

Windowsのリモートデスクトップで別セッションに切り換える

Windowsのリモートデスクトップで複数セッションを使っていた場合、コマンドでセッションを切り換えたい場合がある。

手順

最初に接続中のセッション一覧を確認する。query sessionというコマンドを使用する。

C:\Users\Administrator>query session
 セッション名      ユーザー名               ID  状態    種類        デバイス
 services                                    0  Disc
 console                                     1  Conn
>rdp-tcp#1         Administrator             2  Active  rdpwd
 rdp-tcp#0         Administrator             3  Active  rdpwd
 rdp-tcp                                 65536  Listen

この場合、今接続しているセッションが rdp-tcp#1 で、別セッションがrdp-tcp#2。
rdp-tcp#2に切り換えたい場合は、tsconコマンドでセッションのIDを指定する。
rdp-tcp#2はIDが3なので

C:\Users\Administrator>tscon 3

とすると、セッションが切り変わる。再接続しなくても切り替わるので結構便利。

Technet
query session
Tscon


なりたけ 錦糸町店

先日、怒り新党を観ていて「背脂チャッチャ系」特集をしていて無性に食べたくなったので、なりたけへ。

以前に醤油ラーメンを食べたことがあったので、今回は味噌ラーメンにしてみた。

食券を渡すときに脂の量を聞かれるのですが、迷わず普通に。
一応、カロリーが気になるので(笑)
ちなみに、一番多いのは「ギタギタ」と呼ぶそうです。

麺はやや縮れた中太麺でなかなかの歯ごたえ。
スープには背脂浮きまくりですが、結構しょっぱいですね。
一応調整用スープももらえるようです。

麺は完食しましたが、スープは飲みきれない。。。。
しょっちゅう来たいとは思いませんが、たまにがっつり脂が欲しくなったときに来る感じのお店でしょうか。

IMG_4482

 

<br /> なりたけ TOKYO<br />

 

ジャンル:ラーメン、つけ麺、餃
住所:東京都墨田区錦糸3-3-2
TEL:非公開
アクセス:錦糸町駅 徒歩3分
営業時間:11:00~翌3:00
定休日:水曜日


麺や 璃宮

久々に近所の離宮へ。

ここはつけ麺が有名みたいなのですが、個人的に好きなのは油そばです。
スタミナ丼つきのランチをいつも頼みます。
ちなみに、スタミナ丼は日によって味付けとか生卵の有無などが微妙に違います。

がっつりと混ぜていただきます。
チャーシューに太めのメンマが美味しいです。
スープもついてくるのですが、こってりした油そばの口休めとしてなかなかいけます。

IMG_4405

 

<br /> 麺や 璃宮<br />

 

ジャンル:ラーメン、つけ麺、油そば
住所:東京都江東区毛利1-18-6
TEL:03-5600-0038
アクセス:住吉駅から徒歩5分
営業時間:11:30~24:00
定休日:無休


七菜矢

日曜のお昼過ぎにラーメンが食べたくなり、以前に寄ったことあるラーメン屋に。

つけ麺が人気のお店なのですが、今回はあえてラーメンに。

IMG_4370

つけ麺が魚介系なので、もっとこってりしたラーメンかと思いきや、
なかなかさっぱりしたお味。
透き通ったスープは飲み心地もよい。

ただし、細麺なので今ひとつあっさりしすぎる感もある。

替え玉1玉まで無料ということで頼んだのだが、替え玉の水分でスープが薄くなってしまい残念なことに。

さっぱりした味なので女性にはいいかもしれないけど、つけ麺のイメージでラーメンを注文すると、イメージが違うと感じるかもしれない。

 

<br /> 七菜矢<br />

 

ジャンル:ラーメン、つけ麺
住所:東京都墨田区江東橋2-15-5
TEL:03-3846-8807
アクセス:徒歩3分 錦糸町駅から265m
営業時間:(月~金)11:30~15:00、17:00から売切御免
(土・日・祝)11:30~売切御免
定休日:無休


RubyのhttpclientでUser-AgentにGemのバージョン情報を入れない方法

Rubyのgemのhttpclientを使うと、Webサイトのスクレイピングなどが簡単に作れます。

以下のようにすることで、リクエスト送信時のUser-Agentも設定できます。

hc = HTTPClient.new('','XXXX')

ただし、これだと実際のHTTPリクエストのUser-Agentには、以下のようにパッケージとRubyのバージョンが追加されてしまいます。

User-Agent: XXXX (2.5.3.2, ruby 2.0.0 (2014-05-08))

これはsessin.rbに以下の様に書かれているためです。

def set_header(req)
  if @requested_version
    if /^(?:HTTP\/|)(\d+.\d+)$/ =~ @requested_version
      req.http_version = $1
    end
  end
  if @agent_name && req.header.get('User-Agent').empty?
    req.header.set('User-Agent', "#{@agent_name} #{LIB_NAME}")
  end

これを防ぎ、期待したUser-Agentだけを記録するには、以下のように default_header 引数として、User-Agentをハッシュで渡します。

hc = HTTPClient.new(default_header: {"User-Agent" => "XXXX"})

こうすることで、期待した文字列のみをUser-Agentとして設定できます。

User-Agent: XXXX


ServersManにrbenvでRubyをインストールする

サーバをさくらレンタルサーバからServersManのVPSに引っ越しました。
VPSということで、必要最低限のソフトしか入っていません。

Rubyを入れるにあたり、rootでグローバルに入れるのではなく、一般ユーザでrbenvで入れることにしました。

環境はCentOS7です。

$ uname -r
2.6.32-042stab092.2
$ cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

rbenvはgitでcloneするので、まずはgit自体をインストールします。
ついでにyumもアップデート。

$ sudo yum update
$ sudo yum install git

そして、rbenvをcloneしてパスを設定します。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bash_profile
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile
$ exec $SHELL -l
$ rbenv -v
rbenv 0.4.0-129-g7e0e85b

続いて、ruby-build をcloneします。

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

ビルドに必要なgccとopenssl-devlを入れます

$ yum install gcc openssl-devel

そして、インストール可能なバージョンから最新版を確認し、バージョンを指定してインストールします。

$ rbenv install –list
Available versions:
1.8.6-p383
1.8.6-p420
(略)
2.1.4
2.1.5 <- 最新版 $ rbenv install -v 2.1.5

再読み込みします。

$ rbenv rehash
$ rbenv versions
2.1.5

環境全体でのバージョンを指定。

$ rbenv global 2.1.5
$ rbenv global
2.1.5

動作確認。

$ ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

以上で完了です。


node.jsでgoogle apiを利用する

node.jsにもGoogle APIを使用するためモジュールが用意されています。

参考:google/google-api-nodejs-client

インストールは、npmから行います。

$ npm install googleapis

次の例はGoogle+のユーザIDから名前を取得しています。

var googleapis = require('googleapis');

var API_KEY='XXXX';
var id = '109544372058574620997';

googleapis
  .discover('plus', 'v1')
    .execute(function(err, client) {
      var request1 = client.plus.people.get({ userId: id })
          .withApiKey(API_KEY);

      request1.execute(function(err, result) {
        console.log("Result: " + (err ? err.message : result.displayName));
      });
    });

最初にrequireでモジュールをロードした後、Google APIs Discovery ServiceからAPIのメタデータをロードしてきます。そして、executeメソッドにコールバックを渡して実行します。コールバックの引数にクライアントが渡されるため、そこからリクエストを生成して、APIを実行します。
リクエストのexecuteメソッドにコールバックを渡し、コールバックの引数には実行結果が渡されます。

$ node getname.jp
Result: 渡辺美優紀

利用できるAPIについては、Google APIs Explorerで確認することが出来ます。


nvmで複数バージョンのnode.jsを利用する

最近はやりのnode.jsですが、まだまだ頻繁にバージョンアップが行われます。
毎回、makeして入れ直すのも面倒なので、nvmで手軽にバージョンを切り替えられるようにします。

nvmのインストールはgitで行います。

$ git clone git://github.com/creationix/nvm.git ~/.nvm

そして、nvm.shをsourceで読み込めば完了です。

$ source ~/.nvm/nvm.sh

nvmからnode.jsの特定のバージョンをインストールします。
今回は最新のv0.10.25と一つ前のv0.10.24をインストールします。

$ nvm install v0.10.25
$ nvm install v0.10.24

インストールされたバージョンの一覧は、lsコマンドで確認できます。

$ nvm ls
v0.10.24
v0.10.25
current: v0.10.25

この時点では、currentとしてv0.10.25が選ばれているため、useコマンドでv0.10.24に切り替えてみます。

$ node -v
v0.10.25
$ nvm use v0.10.24
Now using node v0.10.24
$ node -v
v0.10.24

このように、簡単に使用するnode.jsのバージョンを切り替えることが出来ます。
なお、この設定は別のシェルを起動すると消えてしまうので、.bash_profile等に以下のように記載して、毎回有効になるようにします。

source ~/.nvm/nvm.sh
nvm use v0.10.25 > /dev/null


さくらのレンタルサーバにRuby 1.9をインストールする

さくらのレンタルサーバに標準でインストールされているRubyは1.8.7です。
そのため、1.9系を使用するには、ホームディレクトリ配下に自分でrubyをインストールすることになります。

ソースをFTPサーバから取得する

% mkdir ~/local
% mkdir~/loca/src
% cd ~/loca/src
% ftp ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p374.tar.gz

コンパイルしてインストールする

% tar zxvf ruby-1.9.3-p374.tar.gz
% cd ruby-1.9.3-p374
% ./configure –prefix=$HOME/local –with-iconv-dir=/usr/local
% make
% make install

パスを設定する

~/.cshrc の set path の先頭に、%HOME/local/bin を追加する

以上で、ruby 1.9が使用可能となります