まつざきの技術メモ

エンジニアの私的な技術メモです。


コメントする

福岡Ruby会議01でLTしてきました

福岡Ruby会議01が開催されたので、参加してきました。

主催者の@Spring_MTさん、会場をご提供いただいたGuildCafe Costaさん、
参加された皆さん、ありがとうございました!
おもしろいトークとLTが満載で、とても楽しませていただきました。

Rubyも楽しい!!

僕は業務でRubyを使い始める時にやった事についてLTさせてもらいました。

会社で新しい事を始めようとすると、上司や同僚の反対など色々あると思いますが、
僕は以下のようにやっています。

  1. まずは自分で使ってみて検証する
  2. 社内布教活動をする
  3. 小さなツールでもいいので導入実績を作る

 

導入するとメリットがあるプロダクト・ツールがあれば話がスムーズだと思います。
ChefとFluentdはどの会社でも導入メリットがあると思うのでお薦めです!


コメントする

第4回インフラ勉強会@福岡 Fluentdハンズオンを開催しました

9/22(土)に「第4回 インフラ勉強会@福岡 Fluentdハンズオン」を開催しました。

ご参加頂いた方々、ありがとうございました!!

第4回 インフラ勉強会@福岡 Fluentdハンズオン

今回のハンズオン内容は、

  1. Fluentdの簡単な説明と事例紹介
  2. 自分が使いたいデータストア(MySQL, PostgreSQL, MongoDB)をインストール
  3. Fluentdとプラグインのインストール
  4. 僕が準備したconfigの説明
  5. Apacheのログを収集してみる
  6. 自作プラグインを動かしてみる

といった内容で行いました。

GrowthForecastでグラフ書いたり、ikachan経由でIRCサーバに通知したりしたかったんですが、
準備が間に合わなくて出来ませんでした。すみません。。。

 

今回初めてFluentdを使うという方が結構いらっしゃったので、
きっかけとしては良かったかなぁと思いました。
個人的にFluentdすごく好きなので、福岡でも興味を持つ人がもっと増えたら嬉しいです!

 

以下、ハンズオンで使った資料とスライドです。

configと自作プラグインのサンプルなど一式
※GitHubに置いてます

 

最後にお礼です。

@frsyukiさん、@GedowFatherさん、@mikedaさん、@hotchpotchさん、@repeatedlyさん、@tagomorisさん、@riywoさん、@taka84u9さん

のスライド、ブログ、SoftwareDesignの特集記事、ソースなどを、参考・紹介させて頂きました。

ありがとうございますm(_ _)m


コメントする

Webサーバ勉強会@福岡でLTしてきました

 

先日開催されたWebサーバ勉強会@福岡でLTしてきました。

主催者の@yokoninaritaiさん、参加された皆さん、ありがとうございました!

ATND Webサーバ勉強会

「現在運用中のサービスで、ローテーションして消えていくアプリケーションのデバッグログを
保存する良い方法はないかなぁ。サーバも増えていくし、出来れば一箇所にまとめたい・・・。」

と、前々から困っていたんですが、Fluentdとfluent-plugin-mongoを知った時は、
「コレだーーー!!」って感じでした。

運用中のサービスで使う場合、ログファイルをtailする方法が
既存の構成もアプリケーションも修正しなくて良いのでベストなのですが、
複数行にまたがるログの場合、プラグインを自分で作る必要があります。

今回、準備時間があまり取れなかったので、
アプリからFluentdにログを送信する事にしました。

今度はプラグインを書いてみます!

Fluentdマジ良いですよ♪
コミッタの方々、ありがとうございます!

みなさんも是非使ってみてください!

最後に、今回使ったLT資料、Fluentd設定ファイル、Javaソースを貼っておきます。


コメントする

RSpecBookの写経環境を作る

The RSpec Bookの写経環境を作ったのでメモ。

この本で使われているRubyのバージョンは1.8.7。だいぶ古い。
今更1.8.7を使うのもアレなので、今日時点での最新を使う事にします。

ちなみに、本で使われているバージョンは、

  • ruby-1.8.7
  • rubygems-1.3.7
  • rspec-2.0.0
  • cucumber-0.9.2
  • cucumber-rails-0.3.2
  • database_cleaner-0.5.2
  • webrat-0.7.2
  • selenium-client-1.2.18
  • rails-3.0.0

今回インストールした最新バージョンがこれ。

  • ruby-1.9.3p125
  • rubygems-1.8.11
  • rspec-2.9.0
  • cucumber-1.1.9
  • cucumber-rails-1.3.0
  • database_cleaner-0.5.2
  • webrat-0.7.2
  • selenium-client-1.2.18
  • rails-3.2.2

OSはScientific Linux 6.1を使ってます。

cucumber-railsをインストールすると依存関係でnokogiriがインストールされるんだけど、
以下のようなエラーになりました。

Fetching: nokogiri-1.5.2.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing cucumber-rails:
	ERROR: Failed to build gem native extension.

        /home/matsu/.rbenv/versions/1.9.3-p125/bin/ruby extconf.rb
extconf.rb:10: Use RbConfig instead of obsolete and deprecated Config.
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/home/matsu/.rbenv/versions/1.9.3-p125/bin/ruby
	--with-zlib-dir
	--without-zlib-dir
	--with-zlib-include
	--without-zlib-include=${zlib-dir}/include
	--with-zlib-lib
	--without-zlib-lib=${zlib-dir}/lib
	--with-iconv-dir
	--without-iconv-dir
	--with-iconv-include
	--without-iconv-include=${iconv-dir}/include
	--with-iconv-lib
	--without-iconv-lib=${iconv-dir}/lib
	--with-xml2-dir
	--without-xml2-dir
	--with-xml2-include
	--without-xml2-include=${xml2-dir}/include
	--with-xml2-lib
	--without-xml2-lib=${xml2-dir}/lib
	--with-xslt-dir
	--without-xslt-dir
	--with-xslt-include
	--without-xslt-include=${xslt-dir}/include
	--with-xslt-lib
	--without-xslt-lib=${xslt-dir}/lib


Gem files will remain installed in /home/matsu/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.2 for inspection.
Results logged to /home/matsu/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.2/ext/nokogiri/gem_make.out

libxml2 と libxslt っていうのが必要みたい。
ここを参考にさせてもらいました。
きたももんががきたん。 真・$HOMEに入れたlibxml2を使うようにgem install nokogiriする方法

インストール先は$HOME/usr/localにします。

mkdir -p $HOME/usr/local/src
cd $HOME/usr/local/src
wget ftp://xmlsoft.org/libxml2/LATEST_LIBXML2
wget ftp://xmlsoft.org/libxml2/LATEST_LIBXSLT
tar xvf LATEST_LIBXML2
cd libxml2-2.7.8
./configure --prefix=$HOME/usr/local
make
make install
cd ..
tar xvf LATEST_LIBXSLT
cd libxslt-1.1.26
sudo yum install libgcrypt-devel
./configure --prefix=$HOME/usr/local --with-libxml-src=../libxml2-2.7.8
make
make install

これでやっとnokogiriがインストール可能な状態に。

gem install nokogiri -- --with-xml2-include=$HOME/usr/local/include/libxml2 --with-xml2-lib=$HOME/usr/local/lib --with-xslt-dir=$HOME/usr/local

これでやっとcucumber-railsがインストール可能な状態に。

gem install cucumber-rails

長かった。。。


コメントする

Padrinoを試してみた

先日、TwitterのTL見てたら僕にぴったりのブログエントリがありました。

Rubyを始めたい方向けまとめ(2011年秋版)

 

初めてPadrinoの存在を知りましたが、結構メジャーみたいです。
さっそくチュートリアルを試してみます!

Padrino

最近これをテーマとした勉強会も開かれ、勢いがあります。

railsでは大きすぎるし、sinatraではちょっと足りない、そんなニーズに応えるものです。
管理画面が作りやすいのも特長ですね。

 
DBが必要なので、MySQLをインストールします。

# yum install mysql-server
# yum install mysql-devel

 

続いて、mysqlアダプタとpadrinoをインストール。

# gem install mysql
# gem install padrino

 

プロジェクトを生成します。
オプションは色々ありますが、以下の様にしました。
詳しくはマニュアルを参照してください。

% padrino g project example_blog -a mysql -d activerecord -t rspec -s jquery -e haml scss -b
      create  
      create  .gitignore
      create  config.ru
      create  config/apps.rb
      create  config/boot.rb
      create  public/favicon.ico
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  tmp
      create  .components
      create  app
      create  app/app.rb
      create  app/controllers
      create  app/helpers
      create  app/views
      create  app/views/layouts
      create  Gemfile
    applying  activerecord (orm)...
       apply  orms/activerecord
      insert  Gemfile
      insert  Gemfile
      create  config/database.rb
    applying  rspec (test)...
       apply  tests/rspec
      insert  Gemfile
      insert  Gemfile
      create  spec/spec_helper.rb
      create  spec/spec.rake
    skipping  mock component...
    applying  jquery (script)...
       apply  scripts/jquery
      create  public/javascripts/jquery.js
      create  public/javascripts/jquery-ujs.js
      create  public/javascripts/application.js
    applying  haml (renderer)...
       apply  renderers/haml
      insert  Gemfile
    skipping  stylesheet component...
   identical  .components
Bundling application dependencies using bundler...
         run  bundle install from "."
Fetching source index for http://rubygems.org/
Enter your password to install the bundled RubyGems to your system: 
Using rake (0.9.2.2) 
Using multi_json (1.0.3) 
Using activesupport (3.1.1) 
Using builder (3.0.0) 
Using i18n (0.6.0) 
Using activemodel (3.1.1) 
Using arel (2.2.1) 
Using tzinfo (0.3.31) 
Using activerecord (3.1.1) 
Using bundler (1.0.21) 
Using diff-lcs (1.1.3) 
Using mime-types (1.17.2) 
Using grit (2.4.1) 
Using haml (3.1.3) 
Using rack (1.3.5) 
Using url_mount (0.2.1) 
Using http_router (0.10.2) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.3.0) 
Using mysql (2.8.1) 
Using rack-protection (1.1.4) 
Using tilt (1.3.3) 
Using sinatra (1.3.1) 
Using thor (0.14.6) 
Using padrino-core (0.10.5) 
Using padrino-helpers (0.10.5) 
Using padrino-admin (0.10.5) 
Using padrino-cache (0.10.5) 
Using padrino-gen (0.10.5) 
Using padrino-mailer (0.10.5) 
Using padrino (0.10.5) 
Using rack-test (0.6.1) 
Using rspec-core (2.7.1) 
Using rspec-expectations (2.7.0) 
Using rspec-mocks (2.7.0) 
Using rspec (2.7.0) 
Using sinatra-flash (0.3.0) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

=================================================================
example_blog is ready for development!
=================================================================
$ cd ./example_blog
=================================================================

 

次にDBの接続情報を自分の環境に書き換えます。

% cd example_blog
% vim config/database.rb

 

では、さっそく管理画面を作ってみましょう。

% padrino g admin
       force  .components
      create  admin
       exist  admin
      create  admin/controllers/base.rb
      create  admin/controllers/sessions.rb
      create  public/admin
      create  public/admin/stylesheets/base.css
      create  public/admin/stylesheets/themes/amro/style.css
      create  public/admin/stylesheets/themes/bec-green/style.css
      create  public/admin/stylesheets/themes/bec/style.css
      create  public/admin/stylesheets/themes/blue/style.css
      create  public/admin/stylesheets/themes/default/style.css
      create  public/admin/stylesheets/themes/djime-cerulean/style.css
      create  public/admin/stylesheets/themes/kathleene/style.css
      create  public/admin/stylesheets/themes/olive/style.css
      create  public/admin/stylesheets/themes/orange/style.css
      create  public/admin/stylesheets/themes/reidb-greenish/style.css
      create  public/admin/stylesheets/themes/ruby/style.css
      create  public/admin/stylesheets/themes/warehouse/style.css
      create  admin/app.rb
      append  config/apps.rb
       apply  orms/activerecord
       apply  tests/rspec
      create  models/account.rb
      create  spec/models/account_spec.rb
      create  db/migrate/001_create_accounts.rb
      create  admin/views/accounts
      create  admin/controllers/accounts.rb
      create  admin/views/accounts/_form.haml
      create  admin/views/accounts/edit.haml
      create  admin/views/accounts/index.haml
      create  admin/views/accounts/new.haml
      insert  admin/app.rb
       force  models/account.rb
      create  db/seeds.rb
       exist  admin/controllers
       exist  admin/views
      create  admin/views/base
      create  admin/views/layouts
      create  admin/views/sessions
      create  admin/views/base/_sidebar.haml
      create  admin/views/base/index.haml
      create  admin/views/layouts/application.haml
      create  admin/views/sessions/new.haml
      insert  admin/app.rb
      insert  Gemfile
        gsub  admin/views/accounts/_form.haml
        gsub  admin/controllers/accounts.rb

=================================================================
The admin panel has been mounted! Next, follow these steps:
=================================================================
  1) Run 'bundle install'
  2) Run 'padrino rake ar:migrate'
  3) Run 'padrino rake seed'
  4) Visit the admin panel in the browser at '/admin'
=================================================================

 

メッセージの支持に従って、bundle installなどを実行して、サーバを起動。

% bundle install
% padrino rake ar:migrate
% padrino rake seed
% padrino s

 

ブラウザでサイトにアクセスすると管理画面が表示されました。

今日はここまで。


コメントする

ファイルの列挙

普段の開発ではJavaしかやってませんが、
インフラ担当としてサーバメンテもやってるので、サーバのバッチとかはRuby(1.9.2)で書いてます。
始めたばっかりですけど、Rubyも良いですね♪

・再帰的に処理したくない場合
※パスの最後に”/*”が必要なので注意!

Dir.glob("/tmp/*") do |f|
  next if File.directory?(f) # ディレクトリはスキップ
  puts f
end

再帰的に処理したい場合

require "find"

Find.find("/tmp") do |f|
  next if File.directory?(f) # ディレクトリはスキップ
  puts f
end