2016年1月30日土曜日

【Blogger】スマホテンプレートの編集 ページングの表示件数を変更する

  • 公開日:2016年01月30日

記事概要

bloggerのカスタム方法です。

環境

  • Blogger

はじめに

これまであまりしなかったBloggerのカスタマイズを開始しました。
Bloggerのカスタマイズの情報は少ないので、積極的に掲載していこうと思います。

デフォルト動作

デフォルトテンプレートでは、Bloggerのスマホでページングすると、次のページのリスト表示が1件になってしまいます。

(上)デフォルトのリスト画面からのモバイルページングだと、表示件数が1件になってしまう。

これではあまりにユーザーが使い難いです。なので、もっと表示できるように変更します。

テンプレート変更

ページング後のデータ表示件数を変えるには、テンプレートを編集する必要があります。
HTMLテンプレートを開いて、「newerPageUrl」もしくは「olderPageUrl」で検索をしてください。

template

// 新しい投稿リンク
expr:href='data:newerPageUrl'

// 前の投稿リンク
expr:href='data:olderPageUrl' 

上記の変数が、実際のURLに変換されている部分になります。
HTMLに変換後のURLを確認してみます。

HTML

<div class="mobile-link-button" id="blog-pager-newer-link">
<a class="blog-pager-newer-link" href="http://edywrite.blogspot.jp/search?updated-max=2016-01-25T06:17:00%2B09:00&max-results=1&reverse-paginate=true&m=1" id="Blog1_blog-pager-newer-link" title="新しい投稿">‹</a>
</div>
<div class="mobile-link-button" id="blog-pager-older-link">
<a class="blog-pager-older-link" href="http://edywrite.blogspot.jp/search?updated-max=2016-01-23T11:04:00%2B09:00&max-results=1&reverse-paginate=true&start=2&by-date=false&m=1" id="Blog1_blog-pager-older-link" title="前の投稿">›</a>
</div>

URLに変換されていますね。このURLの中の

url

max-results=1

の部分が表示件数になります。
なので以下のように変更します。

template

// 新しい投稿リンク 5件のデータを取得
expr:href='data:newerPageUrl + &quot;&amp;max-results=5&quot;'

// 前の投稿リンク 5件のデータを取得
expr:href='data:olderPageUrl + &quot;&amp;max-results=5&quot;' 

このようにすることでパラメーターにmax-results=5が追加されるので、取得件数が変更できます。
修正を終えたら、テンプレートを保存してブログで動作を確認してみましょう。

動作確認

上記の変更がきちんと行われていることを確認します。

(上)デフォルトのリスト画面からのモバイルページングが、max-resultsで指定した件数になる。

うまくいきました。

まとめ

Bloggerの情報は少ないので、プログラミング能力があると便利です。
自由度が高く、SEO対策をしなくてもgoogle検索に強いので、エンジニアには最高の無料Blogです。しかし、普通の人には少しハードルが高いかもしれません。
ただ、どの無料ブログよりもWEBアプリに近いカスタムができるので頑張ってみてください。慣れです。

以上です。

動画

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月29日金曜日

【コラム】日本政府がサイバーセキュリティの普及に攻殻機動隊とコラボ に思ふこと

記事概要

コラム記事。
コラムはNoteでも公開しています。


内閣サイバーセキュリティセンターで公表されたポスター。
イラスト制作はProduction I.Gが担当。

内閣サイバーセキュリティセンター(NISC)は1月21日、サイバーセキュリティの普及・啓発のため、「攻殻機動隊 S.A.C.」とコラボレーションすると発表した。 攻殻機動隊を採用した理由は官民一体で国民に広くアピールすることを目指してタイアップしたとのこと。

国民へのアピール

サイバー犯罪の数は年々増加している。

なので、こういったキャンペーンを打つのは効果的だと思う。 しかし、サイバー犯罪は奥が深く、ユーザーがどれだけ気を配っても完全な防護策はない。 そこで、ユーザー側と開発者側の相互協力が必要不可欠となる。
しかし、これが難しい。

官の意識と現実の乖離

サイバーテロという言葉を聞く機会が飛躍的に増えてきた。米国や中国の動きを見て、日本政府も危機感を募らせて本腰を入れてきている。
だが、本当にサイバーセキュリティの対策に力を注ぎたいのなら、攻殻機動隊とコラボするより、

  • エンジニアの賃金をあげる
  • エンジニアの負荷を減らす
  • エンジニアの長時間労働を減らす

対策をしたほうが効果は高い。

内閣サイバーセキュリティセンターはきちんと考えたほうがよい。
なぜ多くの人がエンジニアという職業を避けるようになったのか。
貴重なエンジニアが育たないのか。

答えは明白である。

続きはNoteで購読することができます。

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月28日木曜日

rails4.2 site_map.xml capistrano3でdeployする

  • 公開日:2016年01月28日

環境

  • rails 4.2.4
  • ruby 2.2.2
  • vagrant centos6.5

記事概要

sitemap_generatorで作ったsite_map.xmlをcapistrano3で自動デプロイできるようにしたので、そのやり方を記事にしました。

site_map.xmlとは

ページのURLリストをもとにサイトの構造を記述したxml形式のファイルです。
作成したサイトが運用フェーズになったら、必ず導入しておきたいSEO対策の技術の一つです。
site_map.xmlの一番の効果は、検索エンジンの通常のクロール処理では検出できないページを知らせることができることです。

gemのinstall

capistrano3を利用するプロジェクトにsitemap_generatorを追加します。

{project_folder}/Gemfile

gem 'sitemap_generator'

Gemfile記述後に、インストールします。

terminal

// create directory
cd {project_folder}

rbenv exec bundle install

Installing sitemap_generator (5.1.0)
Using spring (1.3.4)
Using spring-commands-rspec (1.0.4)
Using therubyracer (0.12.2)
Using turbolinks (2.5.3)
Using uglifier (2.7.1)
Using unicorn (4.9.0)
Your bundle is complete!
It was installed into ./vendor/bundle
Post-install message from sitemap_generator:

インストールが終了したら、capistrano3にsitemap_generatorの設定をします。

Capistranoでsitemap_generator

まずはCapfileに以下のreqiureを追記します。

{project_folder}/Capfile

require 'capistrano/sitemap_generator'

後はdeply.rbにsitemapの実行処理を追加します。

{project_folder}/config/deploy.rb

  # webサーバー再起動時にsitemapをrefresh(サーバーに送信)する
  after :restart, :sitemap do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      puts "-----restart sitemap-------"
      # Here we can do anything such as:
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :rake, 'sitemap:refresh'
        end
      end
    end
  end

以上で終了です。
さらに確認、本番実行と続けていきましょう。

deployテスト

本番前にdeployのテストをします。

terminal

bundle exec cap production deploy:check

エラーが発生しなければ、本番のdeployを行います。

本番deploy

本番deployをします。せっかくなので私のアプリのdeployログを載せます。

terminal

I, [2016-01-26T06:40:47.922269 #745]  INFO -- net.ssh.connection.session[3fdd4a672b9c]: channel_data: 66 29b
DEBUG [159535d3]    Successful ping of Google
D, [2016-01-26T06:40:47.923078 #745] DEBUG -- tcpsocket[3fdd4a0a92ec]: received packet nr 465 type 94 len 44
I, [2016-01-26T06:40:47.923165 #745]  INFO -- net.ssh.connection.session[3fdd4a672b9c]: channel_data: 66 27b
DEBUG [159535d3]    Successful ping of Bing
D, [2016-01-26T06:40:47.923676 #745] DEBUG -- tcpsocket[3fdd4a0a92ec]: received packet nr 466 type 98 len 44

... // something 

INFO [db1051b1] Finished in 0.102 seconds with exit status 0 (successful).

GoogleとBingにsitemapが送信されているのが確認できますね。

まとめ

Capistrano3でsitemapの自動化をしておくと、本当に便利です。
リリース作業では、手作業は最小限にしておきたいですね。
Capistrano3は本当に優れたdeployツールのなので、是非利用してください。

以上です

PICK UP オススメ書籍

運営サイト(railsで作成しています)


関連記事
参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月27日水曜日

rails4.2 divをlink_toで囲む

  • 公開日:2016年01月27日
  • 最終更新日:2016年02月01日

記事概要


divで囲んだブロックをlink_to(aタグ)で囲む方法を記載した記事です。

read in English

環境

  • rails4.2.4
  • ruby2.3.0

はじめに

WEBアプリを作成しているときに、divをaタグで囲みたいケースはよくあると思います。
例えば、以下のようなHTMLソースです。

{app_folder}/app/view/xxx.erb

<a href="">
<div>
 // 画像や文章
</div>
</a>

上記のような記述にlink_toタグを利用したい場合は、以下のように記載します。

{app_folder}/app/view/xxx.erb

<%= link_to test_path(@test) do %>
<div>
 // 画像や文章
</div>
<% end %>

divタグをブロックで囲むことで、link_toタグを利用できるようになります。

まとめ

rubyはブロックの使い方を覚えると、色々と応用が利くようになります。
時間があるときに、勉強してみてください。

以上です

PICK UP オススメ書籍

English

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月26日火曜日

chef chef-client Local modeを利用する chef-soloからの移行 その4. 古いchefを削除して最新のchefに入れ替える

  • 公開日:2016年01月26日

記事概要


ずっと放置していたchefの移行作業の詳細記事です。最新のchef-dkに入れ替える方法です。

環境

  • rbenv
  • chef
  • vagrant centos6.5

はじめに

前回までで、chef-client Local modeの使い方を覚えたので、実際に検証環境(vagrant)で移行します。

dd

既存のchefのバージョンチェック

既存のchefのバージョンをチェックします。

terminal

// rpm check
rpm -qa | grep chef
chefdk-0.3.2-1.x86_64

// chef version
chef -v
Chef Development Kit Version: 0.3.2

だいぶ古いです。一年半くらいにinstallしたchefです。
まずはsoloで動かして、動作することを確認します。

terminal

cd {chef-repo_base}

knife solo cook 192.168.33.12

問題なく動作することを確認しました。

既存のchefを削除

terminal

// 削除します。
yum remove chefdk-0.3.2-1.x86_64

// 削除を確認します。
rpm -qa | grep chef

正常に削除しました。

最新のchefをinstall

terminal

// chefdk rpmを取得
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.10.0-1.el6.x86_64.rpm

// chefdk rpm install
sudo rpm -Uvh chefdk-0.10.0-1.el6.x86_64.rpm

設定ファイルknife.rbの変更

設定ファイルknife.rbを修正します。pathを変更します。

{chef-repo_base}/.chef/knife.rb

cookbook_path    ["/home/vagrant/chef-solo-repo/cookbooks", "/home/vagrant/chef-solo-repo/site-cookbooks"]
node_path        "/home/vagrant/chef-solo-repo/nodes"
role_path        "/home/vagrant/chef-solo-repo/roles"
environment_path "/home/vagrant/chef-solo-repo/environments"
data_bag_path    "/home/vagrant/chef-solo-repo/data_bags"
#encrypted_data_bag_secret "data_bag_key"

knife[:berkshelf_path] = "/home/vagrant/chef-solo-repo/cookbooks"

これで設定完了です。

chef-client Local mode

chef-client Local modeで実行します。

terminal

// root化
su -

cd {chef-repo_base}

chef-client -z -j 192.168.33.12.json

正常に実行できます。

まとめ

rpmで導入している場合は、chefの削除はremoveコマンドで可能なので、あっさりと移植することが可能だと思います。

さて、これでchef-soloからchef Local modeへの移行は終了になります。
chefは癖のあるるツールですが、1,2年前と比べると飛躍的に使いやすくなっていると思います。

昔挫折した人や、見切りをつけた人ももう一度試してみてはいかかでしょうか。

以上です。

動画

How to use chef Tutorial 3
PICK UP
関連記事
参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月25日月曜日

chef chef-client Local modeを利用する chef-soloからの移行 その3. 既存のchef-soloをchef-client Local modeで実行

  • 公開日:2016年01月25日

記事概要


ずっと放置していたchefの移行作業の詳細記事です。chef-soloで利用していたレシピをchef-client Local modeで動作させます。

環境

  • rbenv
  • chef
  • vagrant centos6.5

はじめに

前回と前々回ではchefのchef-client Local modeを利用する方法を覚えました。
今回はいよいよchef-soloリポジトリをchef-client Local modeで動作させます。

chefのバージョン

terminal

chef -v
Chef Development Kit Version: 0.10.0
chef-client version: 12.5.1
berks version: 4.0.1
kitchen version: 1.4.2

chef-soloリポジトリの配置

既存のchef-soloリポジトリをLocal modeで動作させるために、/home/vagrant/配下にコピーします。

terminal

// sync directory
cd /vagrant_data/data

// chef-solo-repoをコピー
cp -pa chef-solo-repo /home/vagrant/

// chef-solo-repoに移動
cd /home/vagrant/chef-solo-repo

// ファイルを確認
ls -l
total 13
-rwxrwxrwx 1 vagrant vagrant  153 Jan 20 01:52 Berksfile
-rwxrwxrwx 1 vagrant vagrant  424 Jan 20 02:29 Berksfile.lock
drwxrwxrwx 1 vagrant vagrant 4096 Jan 21 07:16 cookbooks
drwxrwxrwx 1 vagrant vagrant    0 Jan 21 07:16 data_bags
drwxrwxrwx 1 vagrant vagrant    0 Jan 21 07:16 environments
drwxrwxrwx 1 vagrant vagrant 4096 Jan 21 07:16 nodes
drwxrwxrwx 1 vagrant vagrant    0 Jan 21 07:16 roles
drwxrwxrwx 1 vagrant vagrant 4096 Jan 21 07:16 site-cookbooks

knife.rbの修正

設定ファイルknife.rbを修正します。

■Before■

{chef-repo_base}/.chef/knife.rb

cookbook_path    ["cookbooks", "site-cookbooks"]
node_path        "nodes"
role_path        "roles"
environment_path "environments"
data_bag_path    "data_bags"
#encrypted_data_bag_secret "data_bag_key"

knife[:berkshelf_path] = "cookbooks"

■After■

{chef-repo_base}/.chef/knife.rb

cookbook_path    ["/home/vagrant/chef-solo-repo/cookbooks", "/home/vagrant/chef-solo-repo/site-cookbooks"]
node_path        "/home/vagrant/chef-solo-repo/nodes"
role_path        "/home/vagrant/chef-solo-repo/roles"
environment_path "/home/vagrant/chef-solo-repo/environments"
data_bag_path    "/home/vagrant/chef-solo-repo/data_bags"
#encrypted_data_bag_secret "data_bag_key"

knife[:berkshelf_path] = "/home/vagrant/chef-solo-repo/cookbooks"

パスをフルパスにします。

chef-client Local modeで実行

chef-solo(knife solo)コマンドでなく、chef-client Local modeで実行します。

■Before■

terminal

cd {chef-repo_base}

knife solo cook 192.168.33.44

■After■

terminal

chef-client -z -j 192.168.33.44.json

cookbookにエラーがなければ正常に実行できます。
実行に失敗した場合は以下のコマンドでcookbookとroleを確認してください

terminal

cd {chef-repo_base}

// cookbook
sudo knife cookbook list -z
mysql                 5.6.3
nginx                 0.1.0
php-fpm               0.1.0
php55                 0.1.0
ruby_build            0.8.0
ruby_rbenv            1.0.1
webconfiguration      0.1.0
yum                   3.9.0
yum-add               0.1.0
yum-mysql-community   0.1.21

// role
sudo knife role list -z
web

上記のように表示されればcookbookとroleの設定は正常です。

まとめ

chef-soloとchef-client Local modeに違いはほとんどありません。
なので、なるべく非推奨のchef-soloを止め、chef-client Local modeに移行しましょう。

以上です。

chefのオススメの本


関連記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月24日日曜日

chef chef-client Local modeを利用する chef-soloからの移行 その2. rbenv cookbookの変更

  • 公開日:2016年01月24日
  • 最終公開日:2016年01月26日

記事概要


ずっと放置していたchefの移行作業の詳細記事です。今回はrbenvのcookbookについて記述しています。
動画で実際の動きも確認できます。

環境

  • rbenv
  • chef
  • vagrant centos6.5

はじめに

chefで構成管理をしている開発者は、Ruby on RailsでWEBアプリを構築している人が多いと思います。 私もWEBアプリは、よほどの理由がない限りはRuby on Railsを利用しています。

また、Ruby on Rails開発者のrubyのバージョン管理は、rbenvを使用している人が多いと思います。私もrbenvを使用していて、サーバーにはBerksfileのcookbookを利用してrbenvを導入しています。

しかし、これまでchef-soloで利用していたrbenvのcookbook仕様が大きく変更されたようです。
そのため、色々とはまってしまいました。
動作確認をしながら確認したので、まとめて記事にしました。

chefのバージョン

terminal

chef -v
Chef Development Kit Version: 0.10.0
chef-client version: 12.5.1
berks version: 4.0.1
kitchen version: 1.4.2

cookbook nameの変更

Berksfileのcookbookの名称が変更になりました。

■Before■

{chef-repo_base}/Berksfile

source "https://api.berkshelf.com"
cookbook 'rbenv', github: "fnichol/chef-rbenv"

■After■

{chef-repo_base}/Berksfile

source "https://api.berkshelf.com"
cookbook 'ruby_rbenv'

rbenvがruby_rbenvに変更されました。

ruby install方法の変更

rbenvを使ってrubyをinstallする方法も変更されました。以前は以下のように属性を設定することでrubyが導入できました。

■Before■

{chef-repo_base}/roles/xxx.json

  "run_list": [
    "recipe[ruby_build]",
    "recipe[rbenv::system]"
  ],
  "default_attributes": {
    "rbenv": {
      "rubies": "2.2.2",
      "global" : "2.2.2",
      "gems" : {
        "2.2.2" : [
          { "name" : "bundler" }
        ]
      }
    }
  }

■After■

{chef-repo_base}/roles/xxx.json

  "run_list": [
    "recipe[ruby_build]",
    "recipe[ruby_rbenv::system_install]",
    "recipe[ruby_rbenv::system]"
  ],
  "default_attributes": {
    "rbenv": {
      "rubies": "2.2.2",
      "global" : "2.2.2",
      "gems" : {
        "2.2.2" : [
          { "name" : "bundler" }
        ]
      }
    }
  }

recipeのsystem.rbを利用する必要があります。

ruby install

chefをLocal modeで実行してrubyをinstallします。当然、実行はrootで行います。

terminal

// rootになる
su -

cd {project_folder}/chef-repo

// Local modeで実行
chef-client -z -j nodes/192.168.33.23.json

導入したrubyの確認

terminal

// global ruby version confirm
rbenv global
2.2.2

// gem version confirm
rbenv exec gem --version
2.4.5

// installed gem list confirm
rbenv exec gem list

*** LOCAL GEMS ***

bigdecimal (1.2.6)
bundler (1.11.2)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
test-unit (3.0.8)

まとめ

chefを利用してミドルウェアをインストールする場合は、極力Berksfileのcookbookを利用するべきだと思います。
今回のrbenvのように大きめの変更が入る場合もあるのですが、コードを読む手間を考慮しても実績のあるcookbookを使うべきです。
使うことでchefの理解も、利用するミドルウェアやサーバーの力も高めることができます。

ただし、十分に開発環境で検証しておきましょう。

以上です。

動画

How to use chef Tutorial 2. install ruby via rbenv.
PICK UP
関連記事
参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月23日土曜日

chef chef-client Local modeを利用する chef-soloからの移行 その1. chef-client Local modeを使ってみる

  • 公開日:2016年01月23日
  • 最終更新日:2016年01月26日

記事概要


ずっと放置していたchefの移行作業の詳細記事です。
動画で実際の動きも確認できます。

環境

  • ruby
  • rbenv
  • mysql
  • vagrant centos6.5

はじめに

chef-soloが非推奨になってから1年くらい経過しました。
rubyを最新のバージョンにするついでにchefの調査をしたところ、そろそろ仕様的にも落ち着いてきているようなのでchef-clientのLocal modeに移行することにしました。

chef-soloはあくまでchefを利用するとっかかりにすぎないと言われています(その割に思い出すのも嫌になるくらい苦戦しましたけど)。 今回移行するWEBアプリの環境は小中規模。なので、chefのLocal modeで動作させるよう修正することにしました。

chef Local modeについて

あたかもChef server上で動いているかのように、ローカルマシン上のchef-repoに対してchef-clientを動かす方法です。
Local modeは、chef-zeroに依存します。chef-zeroは、Chef serverのとても軽量なインスタンスとして動きます。

つまり、ローカルのNodeを管理するだけならLocal modeで十分といえると思います。

移行の手順

しばらくchefの操作から離れていたので、以下のようにステップを踏んでいきます。

  • 新しい開発環境を用意してchefをinstall
  • 新しい開発環境で既存のBerkshelfを利用してサーバーを構築
  • 更新、削除、追加の動作を確認
  • 既存chef-soloをLocal modeに変更
  • 既存環境のchefを、最新のchefに入れかえる
  • 本番に適用

結構手間はかかりますが、仕方ないですね。技術的負債をこれ以上ためるわけにはいきません。
なおこの記事は、chef-soloを多少なりとも利用したことがある前提となっています。
では、はじめていきましょう。

chefのインストール

vagrantでcentos65を起動します。
初期状態のcentos65を利用して学習していきます。

terminal

vagrant up

// wget導入
sudo yum install wget

chefをinstallします

terminal

// chefdk rpmを取得
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.10.0-1.el6.x86_64.rpm

// chefdk rpm install
sudo rpm -Uvh chefdk-0.10.0-1.el6.x86_64.rpm

// install確認
chef -v
Chef Development Kit Version: 0.10.0
chef-client version: 12.5.1
berks version: 4.0.1
kitchen version: 1.4.2

レポジトリを作成します

terminal

cd {project_folder}

// レポジトリの作成
chef generate repo chef-repo

準備は完了です、次にBerksfileを利用してミドルウェアを導入していきます。

Berksfileの導入

まずはBerksfileから動作を確認します。既存のBerksfileをchef-repo配下に配置します。

terminal

cd {project_folder}/chef-repo

// create Berksfile
touch Berksfile

source "https://api.berkshelf.com"
cookbook 'yum'
cookbook 'ruby_build'
cookbook 'ruby_rbenv'
cookbook 'mysql', '~> 5.6.1'

// 実行
berks vendor cookbooks
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/httpclient-2.6.0.1/lib/httpclient/webagent-cookie.rb:458: warning: already initialized constant HTTPClient::CookieManager
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/httpclient-2.6.0.1/lib/httpclient/cookie.rb:8: warning: previous definition of CookieManager was here
Resolving cookbook dependencies...
Fetching 'ruby_rbenv' from git://github.com/fnichol/chef-rbenv.git (at master)
Fetching cookbook index from https://api.berkshelf.com...
Installing apt (2.9.2) from https://api.berkshelf.com ([opscode] https://supermarket.chef.io:443/api/v1)
Installing java (1.39.0) from https://api.berkshelf.com ([opscode] https://supermarket.chef.io:443/api/v1)
Installing mysql (5.6.3) from https://api.berkshelf.com ([opscode] https://supermarket.chef.io:443/api/v1)
Installing ruby_build (0.8.0) from https://api.berkshelf.com ([opscode] https://supermarket.chef.io:443/api/v1)
Using ruby_rbenv (1.0.1) from git://github.com/fnichol/chef-rbenv.git (at master)
Installing yum (3.9.0) from https://api.berkshelf.com ([opscode] https://supermarket.chef.io:443/api/v1)
Installing yum-mysql-community (0.1.21) from https://api.berkshelf.com ([opscode] https://supermarket.chef.io:443/api/v1)
Vendoring apt (2.9.2) to cookbooks/apt
Vendoring java (1.39.0) to cookbooks/java
Vendoring mysql (5.6.3) to cookbooks/mysql
Vendoring ruby_build (0.8.0) to cookbooks/ruby_build
Vendoring ruby_rbenv (1.0.1) to cookbooks/ruby_rbenv
Vendoring yum (3.9.0) to cookbooks/yum
Vendoring yum-mysql-community (0.1.21) to cookbooks/yum-mysql-community

cookbooksフォルダが作成され、フォルダ内に各種レシピがインストールされています。

terminal

cd {project_folder}/chef-repo/cookbooks

ls -l
total 20
drwxrwxr-x 6 vagrant vagrant 4096 Jan 20 07:20 mysql
drwxrwxr-x 7 vagrant vagrant 4096 Jan 20 07:20 ruby_build
drwxrwxr-x 8 vagrant vagrant 4096 Jan 20 07:20 ruby_rbenv
drwxrwxr-x 8 vagrant vagrant 4096 Jan 20 07:20 yum
drwxrwxr-x 5 vagrant vagrant 4096 Jan 20 07:20 yum-mysql-community

roles/***.jsonを作成します。

terminal

cd {project_folder}/chef-repo/roles

// webアプリの構成を設定するjson
touch web.json

{
  "name":"web",
  "chef_type": "role",
  "json_class":"Chef::Role",
  "description":"web server  role",
  "run_list": [
    "recipe[yum]",
    "recipe[ruby_build]",
    "recipe[ruby_rbenv::system_install]",
    "recipe[mysql::server]"
  ],
  "default_attributes": {
    "ruby_build": {
      "upgrade": "sync"
    },
    "mysql": {
      "version":"5.6",
      "port":"3306",
      "server_root_password":"mysql56",
      "remove_anonymous_users":false,
      "remove_test_database":false
    }
  }
}

nodes/xxx.xxx.xxx.xxx.jsonを作成します。

terminal

cd {project_folder}/chef-repo/nodes

touch 192.168.33.10.json

{
  "run_list": [
    "role[web]"
  ],
  "automatic": {
    "ipaddress": "192.168.33.10"
  }
}

以上で準備完了です。

chefをLocal modeで実行

以下のコマンドを実行します。当然、実行はrootで行います。

terminal

// rootになる
su -

cd {project_folder}/chef-repo

// Local modeで実行
chef-client -z -j nodes/192.168.33.23.json

上記を実行すると、正常に処理が終了するはずです。
試しにmysqlのバージョンを確認してみましょう。

terminal

mysql --version
mysql  Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using  EditLine wrapper

正常にmysqlがinstallされています。

まとめ

Berksfileを使った実行の場合、ほとんどchef-soloとやり方が変わりませんでした。
ただし、cookbookのrbenvが大きく変わっていて苦戦したので、次回はrbenvのcookbookについて理解したことをまとめたいと思います。

以上

動画

How to use chef Tutorial 1
PICK UP
関連記事

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月20日水曜日

rails4.2 site_map.xmlを作成する

  • 公開日:2016年01月20日

環境


  • rails 4.2.4
  • ruby 2.2.2
  • vagrant centos6.5

はじめに


railsアプリにsite_map.xmlを導入したので、やり方を記事にしました。

site_map.xmlとは


ページのURLリストをもとにサイトの構造を記述したxml形式のファイルです。
作成したサイトが運用フェーズになったら、必ず導入しておきたいSEO対策の技術の一つです。
site_map.xmlの一番の効果は、検索エンジンの通常のクロール処理では検出できないページを知らせることができることです。

site_map.xml作成方法


railsでsite_map.xmlを作成する場合は、sitemap-generatorを利用すると良いと思います。

{project_folder}/Gemfile

gem 'sitemap_generator'

Gemfile記述後に、インストールします。

terminal

// create directory
cd {project_folder}

rbenv exec bundle install

Installing sitemap_generator 5.1.0
Using spring 1.3.4
Using spring-commands-rspec 1.0.4
Using therubyracer 0.12.2
Using uglifier 2.7.1
Using unicorn 4.9.0
Bundle complete! 27 Gemfile dependencies, 112 gems now installed.

インストール終了後にconfig/sitemap.rbを作成します。

config/sitemap.rb作成


terminal

cd {project_folder}

rbenv exec rake sitemap:install
created: config/sitemap.rb

sitemap.rbの記述


sitemap.rbに必要な項目を記載していきます。hostの設定はかならず行います。

{project_folder}/config/sitemap.rb

SitemapGenerator::Sitemap.default_host = "http://test.com/"

記述が完了したらsitemapを作成します。

terminal

rbenv exec rake sitemap:refresh:no_ping
In '/vagrant_data/{project_folder}/public/':
+ sitemap.xml.gz                                           1 links /  338 Bytes
Sitemap stats: 1 links / 1 sitemaps / 0m00s

{project_folder}/public/にsitemap.xml.gzというファイルが作成されます。
解凍すればsitemap.xmlの中を確認することができます。
また、sitemap.rbではrailsのroutesの設定と同じような記述方法でsite_map.xmlを作成していくことが可能です。

まず最初の例として、引数を設定する必要がないpathを記述してみます。

{project_folder}/config/sitemap.rb

  add samples_path, :priority => 0.7, :changefreq => 'daily'

引数を設定する必要があるpath(showとか)は、以下のように記述します。

{project_folder}/config/sitemap.rb

  Sample.find_each do |sample|
    add sample_path(:id => play.sample)
  end

上記のように必要なroutesの設定をしていくことで巨大なsitemap.xmlを作成できます。
サイトの規模が大きくなればなるほど便利さを実感できると思います。

まとめ


サイトの規模が大きくなればなるほどSitemapGeneratorのありがたみを実感できるはずです。 たとえ何千ページでも簡単にsite_map.xmlを作成できるので、是非試してみてください。

Capistranoを使って自動化しておくとより便利です。
Capistranoを使った自動化の方法は、またの機会に説明したいと思います。

以上です

Rails4の開発にオススメの本


Rubyの応用力をつけるのにオススメの本


運営サイト(railsで作成しています)


参考サイト


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月19日火曜日

完成度の高い名作山岳小説『神々の山嶺(いただき)〈下〉』感想

  • 公開日:2016年01月19日

はじめに


あと3ヶ月もすれば登山の季節となります。
登山に対するテンションを徐々にあげていこうと山岳小説を手にとって読みました。その感想を記載した記事です。

あらすじ


ナラダール・ラゼンドラに会いに行った深町と羽生は、共に岸亮子を助けにいく。
その道程で亮子が乗っていた車が崖から落ちそうになるが、羽生は現役クライマーの能力を発揮して亮子を助ける。
羽生は、エヴェレスト無酸素登頂をすることを深町と亮子に告げる。

亮子は日本に帰るが、深町は羽生を追ってエヴェレストへと戻ることに決める。
羽生ならやり遂げるのではないかという思いがあった。
再び羽生を探すことになった深町はダワ・ザンブーに出会い、アンツエリンと羽生の関係を教えてもらう。

羽生がチベットに残っているのはアンツエリンの尽力によるものであり、そして今回の挑戦である無酸素登頂のためであった。
また、この登頂は法律違反であることも知る。
羽生はすでに高地トレーニングを終え、準備は万端。 それを聞いた深町は、羽生が高度順応のトレーニングをしているポカルデ・ピークに向かって羽生を待つことにした。

羽生と再びであった深町は、羽生からマロリーのカメラを受け取る。
「山が終わったら好きにすればよい」
しかし深町は、このカメラのことが自分の中で風化していたことに気づいた。

たとえ仕事でなくとも羽生についていく。そう決めた深町は羽生のエヴェレスト登頂の計画を聞き出す。 それは、3泊4日でエヴェレスト登頂するという驚きの計画だった。 無謀だと思う深町だが、羽生の考え抜かれた説明を受け、この男なら成し遂げるかもしれないとの思いを抱く。

そして、その計画が実行できる天候の日を待つこと12日。
ついに、深町と羽生はエヴェレスト無酸素登頂に向かった。

1日目。深町は苦労しながらもなんとか羽生についていく。

2日目。深町は氷壁から落ちそうになるが、ぎりぎりのところで羽生に助けられた。
「お前も死ぬ。置いてけ。」
生を諦めかけた深町を羽生は人間離れした技術と力で助ける。

その晩、谷川岳の事故での羽生と岸のロープは岸が切ったのだと知らされる。羽生はずっと過去を引きずっていたことを理解する。

3日目。もう羽生を追うことができない深町はエヴェレストを下りることを決め、羽生はさらに頂上を目指していった。高度の下がった場所で、深町は羽生を激写した。しかし、カメラ越しのファインダーの先で、深町は羽生が雪煙の中に消えていくのを目撃する。
羽生が死ぬはずがない。羽生はアンツエリンと共に羽生の帰還をひたすら待ったが、羽生は帰ってこなかった。深町は、結局一人で日本を戻った。

しかし、日本に帰った深町は、不完全燃焼の精神状態であった。
毎日8キロのランニングをトレーニングとして課していたは、以前のエベレストの登山の仲間との飲み会の席で、自分がエヴェレストに未練があることを自覚する。そして、恋人となっていた涼子にエヴェレストに行くように言われ、深町は再度エヴェレストに挑戦することを決める。

深町はさらにトレーニングを積み、アンツエリンにポーターを頼んで、エヴェレストへ。
苦労を重ねた深町は、エヴェレストの山頂に到着する。

しかし、エヴェレストの帰り道、力尽きそうになった深町はチベット側の岩場で倒れてしまう。
岩場には帰ってこなかった羽生の姿があった。
羽生の死に顔は、生きようとする執念が見えた。最後まで羽生は生きて帰ることを諦めなかったのだ。

羽生の姿に生きて帰ろうと、再び折れかけた心を立て直した深町はエヴェレストを下りはじめた。

感想


世界最高峰のエヴェレストを舞台にした物語です。
冒険小説としての完成度は高く、登山を題材にした物語の中でも屈指の作品です。

下巻のエヴェレスト登攀のシーンは、時間を忘れてよみふけりました。

登山に興味があるひとはもちろん、登山に興味が無い人でも楽しく読める作品に仕上がっています。

そして、この作品は2016年3月12日から岡田准一の主演で映画が公開されることになっています。
タイトルは「エヴェレスト 神々の山嶺(いただき)」になっています。

深町誠(ふかまちまこと)を岡田准一が演じ、羽生丈二を阿部寛が演じることになっています。
今から公開が楽しみな作品です。


マウンテンチャンネル

他の読書に関する記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月13日水曜日

elasticsearch 作成済みのindexにanalyzerを設定する

  • 公開日:2016年01月13日

記事概要


elasticsearchで作成済みのindexにanalyzerを設定する方法を記載した記事です。

環境


  • vagrant centos6.5
  • elasticsearch2.1.1
  • java(OpenJDK) version 1.7.0_91

indexの作成


elasticsearchでindexを作成する場合は、以下のように実行します。

terminal

// command
curl -XPUT 'localhost:9200/sample_ana?pretty'

// result
{
  "acknowledged" : true
}

settingを確認します。

terminal

// command
curl -XGET 'http://localhost:9200/sample_ana/_settings'

// result
{
 "sample_ana": {
  "settings": {
   "index": {
    "creation_date": "1452649163895",
    "uuid": "fCWnTlE_SZ2OiWC796SBBA",
    "number_of_replicas": "1",
    "number_of_shards": "5",
    "version": {
     "created": "2010199"
    }
   }
  }
 }
}

indexが作成されていますね。

indexにanalyzerを定義


上記のindexにはanalyzerが設定されていません。なので、analyzerの設定を行います。

terminal

// command
curl -XPOST 'localhost:9200/sample_ana/_close'

// result
{
 "acknowledged": true
}

まずはclose index APIでindexの_closeを実行する必要があります。
close index APIは、indexをクローズすることができます。また、その後、open index APIでindexをopenにすることもできます。 この処理を実行しないとindex定義後にanalyzerは定義できないので注意してください。

では、状態を確認してみましょう。

terminal

// command
curl 'localhost:9200/_cat/indices?v'

// result
health status index      pri rep docs.count docs.deleted store.size pri.store.size
       close  sample_ana

index sample_anaがcloseの状態になっています。

次にanalyzerの設定を行います。tokenizerにはkuromojiを使います。
kuromojiに関しては、以前にも記事にしているので、kuromojiについて理解したい人は参考にしてみてください。

terminal

// command
curl -XPUT 'localhost:9200/sample_ana/_settings' -d '
{
      "analysis": {
        "tokenizer": {
          "kuromoji_user_dict": {
            "type": "kuromoji_tokenizer",
            "mode": "extended",
            "discard_punctuation": "false",
            "user_dictionary": "userdict_ja.txt"
          }
        },
        "analyzer": {
          "my_analyzer": {
            "type": "custom",
            "tokenizer": "kuromoji_user_dict"
          }
        }
      }
}'

// result
{
 "acknowledged": true
}

うまくいったようです。
open index APIでindexをopenにします。

terminal

// command
curl -XPOST 'localhost:9200/sample_ana/_open'

// result
{
 "acknowledged": true
}

状態を確認します。

terminal

// command
curl 'localhost:9200/_cat/indices?v'

// result
health status index      pri rep docs.count docs.deleted store.size pri.store.size
yellow open   sample_ana   5   1          0            0       650b           650b

動作しています。
最後に設定を確認します。

terminal

// command
curl -XGET 'http://localhost:9200/sample_ana/_settings'

// result
{
 "sample_ana": {
  "settings": {
   "index": {
    "creation_date": "1452649163895",
    "uuid": "fCWnTlE_SZ2OiWC796SBBA",
    "analysis": {
     "analyzer": {
      "my_analyzer": {
       "type": "custom",
       "tokenizer": "kuromoji_user_dict"
      }
     },
     "tokenizer": {
      "kuromoji_user_dict": {
       "user_dictionary": "userdict_ja.txt",
       "type": "kuromoji_tokenizer",
       "discard_punctuation": "false",
       "mode": "extended"
      }
     }
    },
    "number_of_replicas": "1",
    "number_of_shards": "5",
    "version": {
     "created": "2010199"
    }
   }
  }
 }
}

ちゃんとanalyzerにkuromojiが設定されました。

まとめ


elasticsearchで作成済みのindexにあれこれと再設定をするときは、Open / Close Index APIを利用するのがコツです。
elasticsearchはあまり日本語の情報がありませんが、テスト環境を構築してコツコツといじっていくのが使いこなしていく近道です。

以上です。

ElasticSearchの開発にオススメの本


オススメ開発マシン


関連記事


参考サイト


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月12日火曜日

完成度の高い名作山岳小説『神々の山嶺(いただき)〈上〉』感想

  • 公開日:2016年01月12日
  • 最終更新日:2016年01月19日

はじめに


あと3ヶ月もすれば登山の季節となります。
登山に対するテンションを徐々にあげていこうと山岳小説を手にとって読みました。その感想を記載した記事です。

あらすじ


登山カメラマンである深町誠(ふかまちまこと)は、エヴェレストの遠征に失敗し、打ちのめされていた。登山仲間を二人失い、自分一人だけ取材と偽り日本に帰らず、しばらくネパールのカトマンドゥで滞在していた。そこでぶらりと立ち寄った店で偶然カメラを発見する。
そのカメラは登山史上最大の謎であるマロリーアーヴィンのエヴェレスト登頂の謎を解くことができる可能性のある貴重なカメラだった。

しかし、情報を嗅ぎまわるうちにカメラは何者かに盗まれてしまう。カメラを探しに出た深町は、酒場でビガール・サンという男に出会う。そこでのやりとりの後、深町はビガール・サンが伝説の孤高のクライマー羽生丈二(はぶじょうじ)ではないかと推測する。

日本に帰った深町は、調査を続け、ビガール・サンが羽生丈二だと確信することになる。
さらに、深町は羽生の過去を調べていくうちに、羽生に興味を抱くようになっていく。
羽生は天才クライマーとして知られていたが、人と馴染めず職場に長く定着できないでいた。彼の生活の中心は山であり、羽生は山でしか生きることのできない不器用な男であった。
しかし、ある年、周りからも孤立気味だった羽生を尊敬していた後輩の岸を冬の谷川岳で失ったことで、羽生は以前のように頻繁に登山をしなくなっていた。さらに羽生は、羽生を超える若き天才クライマー長谷常雄の存在を追いかけ、エベレストに挑戦し失敗した。そして、羽生はエベレスト登頂に失敗してから行方不明となっていた。

ある日、深町は、羽生を調べていると、岸の妹である岸涼子とコンタクトを取ることになった。
深町は岸涼子から羽生丈二の手記を受け取る。手記の中身はグランドジョブスの登攀記録であった。 そこに記されていたのは、遭難状況での羽生丈二のなまなましい心情であった。
長谷を意識し、死んだ岸を思い、涼子に懺悔する山に生きる不器用な男が見せた死の直前の本音だった。

深町は、さらに羽生に興味を抱いて調査を続けた。そして羽生がネパールにとどまっている理由が 「冬季エヴェレストの南西壁の無酸素単独登頂」だと目星をつけ、ネパールに再び足を運ぶことにする。

再びネパールで羽生を探しはじめた深町は、羽生と繋がりのあるアン・ツエリンを偶然にも見つける。しかし、アン・ツエリンを見失いホテルに戻ると、そこでネパールに飛んできた岸涼子に出会う。羽生に会うためにここまで来た涼子に驚きながらも、深町はそんな涼子に惹かれている自分に気づく。

羽生の情報を手に入れた深町と涼子の元に、アン・ツエリンが突然あらわれる。アン・ツエリンは涼子に羽生のことを忘れて日本に変えるように告げるが、深町と涼子は羽生に会うために町を出ることにする。

ぶらりと町に出た二人だが、まわりをぶらつくといった涼子が夜になっても帰ってこない。すると、羽生から電話がかかってきて、深町と羽生はついに出会うことになる。
羽生から涼子が誘拐されたことを告げられ、取引の電話に応じる。その後のやり取りの中で、羽生が冬季エヴェレストの南西壁の無酸素単独登頂」をやるのだということを引き出す。

マニ・クマールから犯人達を教えた貰った深町と羽生は、誘拐の件を知っているナラダール・ラゼンドラに共に会いにいくことにする。(下巻に続く)

感想


世界最高峰のエヴェレストを舞台にした物語です。
冒険小説としての完成度は高く、登山を題材にした物語の中でも屈指の作品です。

エヴェレスト登頂の謎とされているマロリーとアーヴィンの史実をミステリー的な要素に据え、深町と羽生を中心に物語を構成させていく展開は、さすがに力量のある夢枕獏氏の作品です。氏の有名な作品である陰陽師シリーズを想起させるミステリー的な要素も含まれていて、読者を飽きさせない作品に仕上がっています。

登山に興味があるひとはもちろん、登山に興味が無い人でも楽しく読める作品に仕上がっています。

そして、この作品は2016年3月12日から岡田准一の主演で映画が公開されることになっています。
タイトルは少し変更され「エヴェレスト 神々の山嶺(いただき)」となっています。

深町誠(ふかまちまこと)を岡田准一が演じ、羽生丈二(はぶじょうじ)を阿部寛が演じることになっています。
エヴェレストをテーマにした広大なスケールの作品なので、今から公開が楽しみな作品です。

久しぶりに映画館で見たいと思っている邦画でもあります。
映画を見たら、その感想もブログに載せたいと思います。

以上です。(神々の山嶺(いただき)〈下〉』の感想に続きます)


マウンテンチャンネル

他の読書に関する記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月9日土曜日

ドローン検定が発足していた件

  • 公開日:2016年01月08日

ドローン検定


あと3か月もすれば春となり、登山の季節になります。
登山の撮影に備えてドローンを再開しようと思ったら、なんと、『ドローン検定』なる資格ができていました。

試験はすでに3回行われているようです。
日本人は本当に資格好きですね。
勤勉といえば聞こえはいいですが、肩書に弱いともいえるかもしれません。

私は資格とかあまり好きじゃないんですけど、こういったネタ的な資格は取りたくなりますね。
私もやっぱりコテコテの日本人ってことなんでしょうね。

こち亀でドローンネタ


先日購入したこち亀の197巻にも、ドローンネタの話がありました。

面白い考え方だったので、思わず声を出して笑ってしまいました。
こういったドローンがあったら面白いと思います。ちょっと勉強して作ってみようかなと思いました。
もしよかったら読んでみてください。

まとめ


最近はドローンから少し離れていたのですが、また再開していきたいと思います。
去年は色々ドローンに関する悪いニュースが多すぎて、あまり活動できなかったので。

以上です

ドローン検定のテキスト


関連記事


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月7日木曜日

elasticsearch plugin installの失敗 SSLException java.security.ProviderException

  • 公開日:2016年01月07日

記事概要


elasticsearchでpluginコマンドを実行したところ、SSLException java.security.ProviderExceptionが発生してインストールに失敗しました。
その対応方法をまとめた記事です。
read in English

環境


  • vagrant centos6.5
  • elasticsearch2.1.1
  • java(OpenJDK) version 1.7.0_91

kurimoji plugijn installの失敗


kurimoji(Javaで書かれた日本語形態素解析ソフトウェア)はelasticsearch2.1以降では、pluginに公式に取り込まれています。
なので、以下のようにinstallができます。

terminal

sudo /usr/share/elasticsearch/bin/plugin install --verbose analysis-kuromoji

Failed: SSLException[java.security.ProviderException: java.security.KeyException]; nested: ProviderException[java.security.KeyException]; nested: KeyException;
ERROR: failed to download out of all possible locations

しかし、私の環境では、pluginコマンドは上記のように失敗しました。

javaのvesionの切り替え


結論から述べるとpluginのinstallに失敗するのは、javaのversionが原因です。
なのでinstallされているjavaをチェックします。

terminal

yum search java | grep openjdk
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos with full debug on
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment with
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK API Documentation for packages
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle for packages with

yumには最新のjava-1.8.0-openjdkが存在しています。
次に、現在利用しているjavaを確認します。

terminal

alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java


java-1.8.0-openjdkがinstallされていません。
なので、installします。

terminal

sudo yum install -y java-1.8.0-openjdk

javaのversionをチェックします。

terminal

java -version
java version "1.7.0_91"

利用しているjavaが変更されていないので切り替えます。

terminal

sudo alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   3           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 3

再度versionをチェックします。

terminal

java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

java-1.8.0-openjdkに変更されました。

kurimoji plugin の再install


java-1.8.0-openjdkになったので、再度pluginコマンドを実行します。

terminal

sudo /usr/share/elasticsearch/bin/plugin install --verbose analysis-kuromoji

Downloading .DONE
- Plugin information:
Name: analysis-kuromoji
Description: The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elasticsearch.
Site: false
Version: 2.1.1
JVM: true
 * Classname: org.elasticsearch.plugin.analysis.kuromoji.AnalysisKuromojiPlugin
 * Isolated: true
Installed analysis-kuromoji into /usr/share/elasticsearch/plugins/analysis-kuromoji

うまくいきました。
念のために、pluginを確認してみましょう。

terminal

sudo /usr/share/elasticsearch/bin/plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
    - analysis-kuromoji

java7を使い続けたい人もいると思います。7に再度切り替えて確認してみましょう。

terminal

sudo alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*  2           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
 + 3           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

java -version
java version "1.7.0_91"
OpenJDK Runtime Environment (rhel-2.6.2.2.el6_7-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

sudo /usr/share/elasticsearch/bin/plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
    - analysis-kuromoji

問題ありませんね。

まとめ


elasticsearch2.1.1でpluginコマンドを利用する場合は、javaのversionを8にあげる必要があります。
pluginコマンドでjava8が必要なだけなので、plugin導入後はjava7で動いているシステムでも問題なく利用できます。

でも可能な限り最新版を利用するべきです。やはりアップデートはマメにやらないといけませんね。

以上。

オススメ開発マシン


関連記事


参考サイト


English


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月6日水曜日

rails5 rails4.2.4からrails5.0.0beta1の移行作業でわかったこと まとめ その2

  • 公開日:2016年01月06日

環境


  • rails 4.2.4, rails 4.2.5 → rails5.0.0beta1
  • ruby 2.2.3
  • rbenv rbenv 0.4.0-183-gc18a3f9

はじめに


rails5のbeta1がリリースされました。春頃には正式なrails5がリリースされるのではないでしょうか。
しかし、Gemfileをrails5に変更しても、既存のrailsアプリはまず動かないと思います。

現在、私も色々とエラーを潰しながら調査と更新に必要な修正作業をしています。その中で、これまでにわかったことを記事としてまとめました。早めにrails5に更新しようと考えている人の参考になれば幸いです。
また、この記事は前回の続きになっています。
read in English

config.loggerの未対応


これは私がどはまりしたエラーです。rails4.2系ではこの設定でrailsアプリの日時のログローテーションを実施しているのですが、この設定のせいでrails5.0.0beta1のアプリが動作しなくなっていました。
なので、以下のように修正します。

変更前

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  config.logger = Logger.new('log/development.log', 'daily')

変更後

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # no use
  # config.logger = Logger.new('log/development.log', 'daily')

ログローテーションは別の方法で実装してください。

cannot load such file -- sass


これはsassファイルが読み込めないときに発生するエラーです。なので、sassファイルを削除するだけで動作します。
個人的にも、sassを使うのはあまり良い手段だとは思えません。cssを使いましょう。

bin/setup


rails4と比較して最も変更があったのがこのファイルです。
rails4までのrakeコマンドが、railsコマンドに変更されています。
このファイルの更新は、

terminal

rake rails:update

コマンドで上書きできると思います。変更前と変更後をdiffで比較して書き換えてください。

その他


上記以外にrails5用に変更、もしくは追加したほうが良いファイルです。
適当なrails5プロジェクトを作成して、diffでフォルダごと比較して変更していきましょう。


// change
config/environments/development.rb

// new file
active_record_belongs_to_required_by_default.rb

まとめ


前回と今回の記事で、私が作成したアプリ動作するようになりました。
なので、近いうちにアプリをrails5 beta1に変更しようと思います。

なにか気づいたことがあれば、また記事にしたいと思います。

以上です

Rails4の開発にオススメの本


Rubyの応用力をつけるのにオススメの本


運営サイト(railsで作成しています)


関連記事


English

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年1月5日火曜日

rails5 rails4.2.4からrails5.0.0beta1の移行作業でわかったこと まとめ その1

  • 公開日:2016年01月05日
  • 最終更新日:2016年01月06日

環境


  • rails 4.2.4, rails 4.2.5 → rails5.0.0beta1
  • ruby 2.2.3
  • rbenv rbenv 0.4.0-183-gc18a3f9

はじめに


rails5のbeta1がリリースされました。春頃には正式なrails5がリリースされるのではないでしょうか。
しかし、Gemfileをrails5に変更しても、既存のrailsアプリはまず動かないと思います。

現在、私も色々とエラーを潰しながら調査と更新に必要な修正作業をしています。その中で、これまでにわかったことを記事としてまとめました。
早めにrails5に更新しようと考えている人の参考になれば幸いです。
read in English

springの未対応について


rails5.0.0beta1では、現在(2016/01/05)springを動かすことができません。なので、既存のrailsアプリで利用している場合は、削除する必要があります。
rbenv exec bundle install(update)でgemを管理している場合は、以下のように削除します。

terminal

vi Gemfile

#gem 'spring'
#gem 'spring-commands-rspec'

rbenv exec bundle exec gem uninstall spring
rbenv exec bundle exec gem uninstall spring-commands-rspec

kaminariの未対応について


rails5.0.0beta1では、現在(2016/01/05)kaminariを動かすことができません。ActionView::MissingTemplateが発生します。
rails5.0.0beta1で動かす場合は、最新のkaminariに変更する必要があります。
rbenv exec bundle install(update)でgemを管理している場合は、以下のようにGemfileを変更します。

変更前

{project_folder}/Gemfile

gem 'kaminari'

変更後

{project_folder}/Gemfile

gem 'kaminari', github: 'amatsuda/kaminari'

ファイルを修正したら更新処理を実行します。

terminal

rbenv exec bundle install

Using kaminari 1.0.0.alpha (was 0.16.3) from git://github.com/amatsuda/kaminari.git (at master)

DEPRECATION WARNING: `serve_static_files` is deprecated and will be removed in Rails 5.1.


serve_static_filesが非推奨になりました。これはrails4.2からですが、rails5.1で完全に削除されてしまうようです。
なので、以下のように変更します。

変更前

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # Configure static asset server for tests with Cache-Control for performance.
  config.serve_static_files  = true

変更後

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # Configure static asset server for tests with Cache-Control for performance.
  config.public_file_server.enabled  = true

DEPRECATION WARNING: `static_cache_control` is deprecated and will be removed in Rails 5.1.


static_cache_controlが非推奨になりました。これも上記のserve_static_filesと同様に、rails5.1では完全に削除されてしまうようです。
なので、以下のように変更します。

変更前

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # config.serve_static_assets = ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.static_cache_control = 'public, max-age=3600'

変更後

{project_folder}/config/environments/test.rb(development.rb and production.rb)

  # config.serve_static_assets = ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }

DEPRECATION WARNING: before_filter is deprecated and will be removed in Rails 5.1.


ApplicationControllerで必ずといっていいほど利用するbefore_filterが非推奨になりました。これも上記のserve_static_filesやpublic_file_server.headersと同様に、rails5.1では完全に削除されてしまうようです。
なので、以下のように変更します。

変更前

{projectfolder}/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_filter :set_locale
  
  // something

end

変更後

{projectfolder}/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_action :set_locale
  
  // something

DEPRECATION WARNING: use_transactional_fixtures= is deprecated and will be removed from Rails 5.0.


fixtureのuse_transactional_fixturesも非推奨になります。これはまだrspecが未対応なので、今は変更しないようにしましょう。

まとめ


rails3からrails4のアップデートの時と同じく、rails4からrails5のアップデートもそれなりの時間が取られると思います。
なので、gitで別ブランチを作成し、なるべく早くから対策をしていきましょう。

メジャーアップデートをするときにいつも思うのは、railsでアプリを作成する場合は、人気のあるgemを使い、規約に沿った実装をすることがとても大切ということです。
間違っても、SIビジネスの受託サービスでrailsを使用してはいけません。ほぼ間違いなく、そのプロジェクトは死んでしまいます。

このブログでは、しばらくrails5の情報が多くなるかもしれませんが、よろしくお願いします。

以上です

Rails4の開発にオススメの本


Rubyの応用力をつけるのにオススメの本


運営サイト(railsで作成しています)


関連記事


参考サイト


English

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加
Related Posts Plugin for WordPress, Blogger...