oss-gate / workshop

OSSの開発に未参加または参加したことはあるけどまだ自信がない人を後押しするワークショップ用のリポジトリー
124 stars 547 forks source link

OSS Gateワークショップ2016-03-26: ngram: Rroonga: 作業ログ #19

Closed ngram closed 8 years ago

ngram commented 8 years ago

作業ログは、参加者が、このワークショップを通して得るものをより増やすために重要になります。なぜなら作業ログがメンターからのフィードバックをより充実させるからです。

作業ログを元にメンターと「ふりかえり」をするタイミングがあります。「ふりかえり」では次のことをします。

メンターは次のようなフィードバックをします。これは、参加者とは違う視点から参加者の行動を観察することおよびメンターの経験があるからできることです。(「ふりかえり」の前にこんなフィードバックをよろしくお願いします!とお願いすると効果が高まるので実践してみましょう。)

このように、参加者の作業をメンター視点で一緒に整理し、参加者の今後の行動に活かす活動がここでいう「ふりかえり」です。そのため、「参加者にとって」ログに残すべきかどうか、という視点ではなく、「とりあえずログに残す」という視点でログを残してください。これは、参加者が重要だと判断しなくてもメンターの視点から見たら大事なこともあるからです。

ログに残すときは次のようなときです。

ログに残すことは次のことです。「備考」以外は作業の邪魔にならないように一言でよいです。備考は作業に役立つので必要な分だけ書いてください。

ログはコメントとして追記していってください。テンプレートは次の通りです。

* 作業(ここにやること、やっていること、やったことを書く)
* 思っていること:(今どう思っているかを書く)

備考:(必要なら必要なだけ書く。必要ないなら書かなくてもよい。)

例1(備考なし):

* 作業:インストールを始めた
* 思っていること:ドキュメント通りに進めれば大丈夫だろう

例2:

* 作業:インストールが失敗した
* 思っていること:ドキュメントに手順が足りない?

備考:エラーメッセージは次の通り

```text
XXX is not found

必要なファイルが足りないのかなぁ。

ngram commented 8 years ago

認証Proxy環境下でインストールに失敗するので、それを修正するのが目標です。

ngram commented 8 years ago

下記のREADMEを読んでインストール作業 https://github.com/ranguba/rroonga

ngram commented 8 years ago
Fetching: rroonga-6.0.0.gem (100%)
ERROR:  Error installing rroonga:
        The 'rroonga' native gem requires installed build tools.

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

C:\Users\ngram>ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]
ngram commented 8 years ago

バイナリは以下のものを利用 DevKit-mingw64-64-4.7.2-20130224-1432-sfx

ngram commented 8 years ago
C:\bin\Ruby21-DevKit>ruby dk.rb init
[INFO] found RubyInstaller v2.1.5 at C:/bin/Ruby21

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

C:\bin\Ruby21-DevKit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/bin/Ruby21'
[INFO] Installing 'C:/bin/Ruby21/lib/ruby/site_ruby/devkit.rb'
C:\bin\Ruby21-DevKit>gem install rroonga
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rroonga:
        ERROR: Failed to build gem native extension.

    C:/bin/Ruby21/bin/ruby.exe extconf.rb
checking for GCC... *** 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=C:/bin/Ruby21/bin/ruby
C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to gen
erate an executable file. (RuntimeError)
You have to install development tools first.
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:571:in `block in try_compile'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:524:in `with_werror'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:571:in `try_compile'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:811:in `macro_defined?'
        from extconf.rb:39:in `block in <main>'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for'

        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in po
stpone'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:321:in `open'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:321:in `open'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:347:in `postpone'
        from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for'
        from extconf.rb:38:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in C:/bin/Ruby21/lib/ruby/gems/2.1.0/gems/rroong
a-6.0.0 for inspection.
Results logged to C:/bin/Ruby21/lib/ruby/gems/2.1.0/extensions/x86-mingw32/2.1.0
/rroonga-6.0.0/gem_make.out
ngram commented 8 years ago
ngram commented 8 years ago
C:\bin\Ruby21-Devkit32>ruby dk.rb init
[INFO] found RubyInstaller v2.1.5 at C:/bin/Ruby21

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

C:\bin\Ruby21-Devkit32>ruby dk.rb install
[INFO] Skipping existing gem override for 'C:/bin/Ruby21'
[WARN] Skipping existing DevKit helper library for 'C:/bin/Ruby21'
ngram commented 8 years ago
ngram commented 8 years ago
C:\bin\Ruby21-Devkit32>ruby dk.rb init
[INFO] found RubyInstaller v2.1.5 at C:/bin/Ruby21

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

C:\bin\Ruby21-Devkit32>ruby dk.rb install
[INFO] Skipping existing gem override for 'C:/bin/Ruby21'
[INFO] Installing 'C:/bin/Ruby21/lib/ruby/site_ruby/devkit.rb'
ngram commented 8 years ago
C:\bin\Ruby21-Devkit32>gem install rroonga
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed rroonga-6.0.0
Parsing documentation for rroonga-6.0.0
Installing ri documentation for rroonga-6.0.0
Done installing documentation for rroonga after 9 seconds
1 gem installed
ngram commented 8 years ago
kou commented 8 years ago

あれ!? gem install rroonga とするとバイナリーがインストールできるはずなんですけど。。。!

ngram commented 8 years ago

あれ!? gem install rroonga とするとバイナリーがインストールできるはずなんですけど。。。!

Windowsで認証Proxyを通じてインストールする場合に、うまくいかないはずです。 これから実際にWindows上で再現できる環境を作成します。

kou commented 8 years ago

なるほど!

ngram commented 8 years ago
irb(main):001:0> require 'groonga'
=> true
irb(main):002:0> Groonga::Database.create(:path => "./test.db")
=> #<Groonga::Database id: <nil>, name: (anonymous), path: <./test.db>, domain:(nil), range: (nil), flags: <>>
irb(main):003:0> Groonga::Schema.create_table("Items", :type => :hash)
=> [#<Groonga::Schema::TableDefinition:0x279d080 @name="Items", @definitions=[], @options={:context=>#<Groonga::Context encoding: <:utf8>, database: <#<Groonga::Database id: <nil>, name: (anonymous), path: <./test.db>, domain: (nil), range: (nil), flags: <>>>>, :type=>:hash}, @table_type=Groonga::Hash>]
irb(main):004:0> items = Groonga["Items"]
=> #<Groonga::Hash id: <256>, name: <Items>, path: <./test.db.0000100>, domain:<ShortText>, range: (nil), flags: <>, size: <0>, encoding: <:utf8>, default_tokenizer: (nil), token_filters: [], normalizer: (nil)>
irb(main):005:0> items.size
=> 0
irb(main):006:0> items.add("http://en.wikipedia.org/wiki/Ruby")
=> #<Groonga::Record:0x28263c0 @table=#<Groonga::Hash id: <256>, name: <Items>,path: <./test.db.0000100>, domain: <ShortText>, range: (nil), flags: <>, size: <1>, encoding: <:utf8>, default_tokenizer: (nil), token_filters: [], normalizer:(nil)>, @id=1, @added=true, attributes: {"_id"=>1, "_key"=>"http://en.wikipedia.org/wiki/Ruby"}>
irb(main):007:0> items.size
=> 1
irb(main):008:0>
ngram commented 8 years ago
C:\bin\Ruby21-Devkit32>gem uninstall rroonga
Remove executables:
        groonga-database-inspect, grndump, grntest-log-analyze, groonga-index-dump

in addition to the gem? [Yn]  n
Executables and scripts will remain installed.
Successfully uninstalled rroonga-6.0.0

groongaのフォルダが以下に残っていたので念のため削除

C:\bin\Ruby21\lib\ruby\gems\2.1.0\gems
ngram commented 8 years ago

ソースコード

require 'webrick'
require 'webrick/httpproxy'
require 'uri'

# 認証Procを作成
auth_proc = Proc.new(){|req,res|
  WEBrick::HTTPAuth.proxy_basic_auth(req,res,'proxy') do |user,pass|
    user == 'test' and pass == 'testpass' #この部分で認証。
  end
}

# プロキシサーバオブジェクトを作る
s = WEBrick::HTTPProxyServer.new({
                                     :BindAddress => 'xxx,xxx,xxx,xxx',
                                     :Port => 8080,
                                     :ProxyAuthProc => auth_proc
                                 })

# SIGINT を捕捉する。
Signal.trap('INT') do
    # 捕捉した場合、シャットダウンする。
    s.shutdown
end

# サーバを起動する。
s.start
ngram commented 8 years ago

認証なしの場合

C:\Users\ngram>set http_proxy=http://192.168.22.128:8080
C:\Users\ngram>gem install rroonga --verbose
...
 97% [143/146]  lib/groonga/statistic-measurer.rb
 98% [144/146]  lib/groonga/sub-records.rb
 99% [145/146]  lib/groonga/table.rb
100% [146/146]  lib/rroonga.rb

Installing ri documentation for rroonga-6.0.0
Done installing documentation for rroonga after 10 seconds
1 gem installed

認証ありの場合

C:\Users\ngram>set http_proxy=http://test:testpass@192.168.22.128:8080
C:\Users\ngram>gem install rroonga --verbose
...
Building native extensions.  This could take a while...
C:/bin/Ruby21/bin/ruby.exe extconf.rb
checking for GCC... yes
checking for Win32 OS... yes
downloading http://packages.groonga.org/windows/groonga/groonga-6.0.0-x86.zip...
*** 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=C:/bin/Ruby21/bin/ruby
C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:353:in `open_http': 407 Proxy Authentic
ation Required  (OpenURI::HTTPError)
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:724:in `buffer_open'
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:210:in `block in open_loop
'
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:208:in `catch'
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:208:in `open_loop'
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:704:in `open'
        from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:34:in `open'
        from extconf.rb:86:in `download'
        from extconf.rb:118:in `extract_groonga_win32_binary'
        from extconf.rb:71:in `block in install_groonga_locally'
        from extconf.rb:69:in `chdir'
        from extconf.rb:69:in `install_groonga_locally'
        from extconf.rb:264:in `install_local_groonga'
        from extconf.rb:274:in `<main>'
ERROR:  Error installing rroonga:
        ERROR: Failed to build gem native extension.

    Building has failed. See above output for more information on the failure.
extconf failed, exit code 1

Gem files will remain installed in C:/bin/Ruby21/lib/ruby/gems/2.1.0/gems/rroong
a-6.0.0 for inspection.
Results logged to C:/bin/Ruby21/lib/ruby/gems/2.1.0/extensions/x86-mingw32/2.1.0
/rroonga-6.0.0/gem_make.out
ngram commented 8 years ago
yard, rake-compiler, packnga
# ranguba/rroongaをforkしてclone
% git clone git@github.com:ngram/rroonga.git
% gem build rroonga.gemspec
tSU-RooT commented 8 years ago

PRまでは行かないようなので、とりあえずIssueを立てることに。

ngram commented 8 years ago
kou commented 8 years ago

おつかれさまでした!参加した感想をブログとかにまとめてくれるとOSS Gateワークショップの普及につながってうれしいです! (次回からはフィードバックしたメンターの人にその場でcloseしてもらうようにしよう。おつかれ!とか言いながら。)