Guard: рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рдмрдЪрд╛ - рджреЗрдЦрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ ...

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЬрдире░ 2012  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: guard/guard

рдЧрд╛рд░реНрдбрдлрд╛рдЗрд▓:

guard 'rspec', :version => 2, :cli => "--color --format nested" do
  watch(%r{^spec/.+_spec\.rb})
  watch(%r{^lib/(.+)\.rb})     { |m| "spec/#{m[1]}_spec.rb" }
end

рдЬреЗрдордлрд╛рдЗрд▓

group :development do
  gem 'guard'
  gem 'libnotify'
  gem 'guard-rspec'
  gem 'rb-readline'
end

рдкрд░реНрдпрд╛рд╡рд░рдг

  • рд▓рд┐рдирдХреНрд╕ 2.6.32-5-amd64
  • рд░реВрдмреА 1.8.7 (2011-06-30 рдкреИрдЪрд▓реЗрд╡рд▓ 352)

    рддреНрд░реБрдЯрд┐

рдЬрдм рдореИрдВ guard start рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде libnotify рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЧрд╛рд░реНрдб рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

//home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/watcher.rb:80:in `initialize': No space left on device - Failed to watch "/home/blake/dev/my/project_child/.git/objects/78": The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource. (Errno::ENOSPC)
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `new'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:199:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:58:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listener.rb:100:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:20:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard.rb:203:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/cli.rb:75:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `send'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/bin/guard:6
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19:in `load'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/watcher.rb:80:in `initialize': No space left on device - Failed to watch "/home/blake/dev/my/project_child/.git/objects/78": The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource. (Errno::ENOSPC)
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `new'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:199:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:58:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listener.rb:100:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:20:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard.rb:203:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/cli.rb:75:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `send'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/bin/guard:6
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19:in `load'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19


рдХреНрдпрд╛ рдпрд╣ рдЧрд┐рдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

inotify рдХреЗ рд▓рд┐рдП max_user_watches рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 8192 рдкрд░ рд╕реЗрдЯ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ 100k рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реИрдВред

cat /proc/sys/fs/inotify/max_user_watches

echo 100000|sudo tee /proc/sys/fs/inotify/max_user_watches

рдмреВрдЯ рдкрд░ max_user_watches рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, /etc/sysctl.conf рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ fs.inotify.max_user_watches=100000 рдЬреЛрдбрд╝реЗрдВ рдпрд╛ fs.inotify.max_user_watches= рдХреЛ 100000 рдореЗрдВ рдареАрдХ рдХрд░реЗрдВред

рдореБрдЭреЗ рдзрдиреНрдпрд╡рд╛рдж рдордд рджреЛ, рдЗрд╕ рдЖрджрдореА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж -> http://blog.sorah.jp/2012/01/24/inotify-limitation

рд╕рднреА 18 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рддрдм рдЖ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдВ, рдЖрдк ignore_paths рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрде рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА README рдореЗрдВ )

рдореИрдВрдиреЗ ignore_paths '.git' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

рдореБрдЭреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ 93 рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реА рд╣реИрдВ:

find . | grep -v '.git'  | wc -l
93

рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рд▓реЛрдЧреЛрдВ рдХреЛ lib рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдХреЗрд╡рд▓ FYI рдХрд░реЗрдВ, .git рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/guard/guard/blob/master/lib/guard/listener.rb#L19

рдХреЛрдИ рдЦрдмрд░?

рдирд╣реАрдВредрдЗрд╕реЗ рджреВрд╕рд░реА рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

рд╣рдореНрдо .. рдореЗрд░реЗ рдХрд╛рдо рдкрд░, рджреВрд╕рд░реЗ рдкреАрд╕реА рдкрд░ рд╡рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдЪрд▓рддрд╛ рд╣реИ .. рджреЛрдиреЛрдВ рдкреАрд╕реА рдкрд░ рдореИрдВ рдбреЗрдмрд┐рдпрди рд╕реНрдХреНрд╡реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдПрдХ рдмрдбрд╝реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдирджреЗрдЦрд╛_рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдЕрдирджреЗрдЦрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рдХреЛ 'рджреЗрдЦрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓' рдХрд┐рдпрд╛ рд╣реИред

рдкрдереЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЧрд╛рд░реНрдб рд╕реНрддрд░ рдкрд░ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди rb-inotify рд╕рд╛рде рдирд╣реАрдВ, ignore_paths рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ rb-inotify рдореЗрдВ рдПрдХ рдЕрдирджреЗрдЦрд╛_рдкрде рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред @ nex3 рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд inotify рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрдереЛрдВ рдХреЛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рд╕реЗ рдореЙрдиреНрд╕реНрдЯрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ред рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВрдиреЗ .git рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

inotify рдХреЗ рд▓рд┐рдП max_user_watches рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 8192 рдкрд░ рд╕реЗрдЯ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ 100k рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реИрдВред

cat /proc/sys/fs/inotify/max_user_watches

echo 100000|sudo tee /proc/sys/fs/inotify/max_user_watches

рдмреВрдЯ рдкрд░ max_user_watches рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, /etc/sysctl.conf рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ fs.inotify.max_user_watches=100000 рдЬреЛрдбрд╝реЗрдВ рдпрд╛ fs.inotify.max_user_watches= рдХреЛ 100000 рдореЗрдВ рдареАрдХ рдХрд░реЗрдВред

рдореБрдЭреЗ рдзрдиреНрдпрд╡рд╛рдж рдордд рджреЛ, рдЗрд╕ рдЖрджрдореА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж -> http://blog.sorah.jp/2012/01/24/inotify-limitation

@jhirn рдЕрдЪреНрдЫрд╛ рд▓рд┐рдВрдХ, рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! /рд╕реАрд╕реА @ рдорд╛рд╣реЗрд░4рдПрд╡рд░

@thibaudgg рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ (рд╡рд┐рдХреА рдкреЗрдЬ?) рдпрд╛ рд╕реБрдиреЛ рд░реЗрдкреЛ рдкрд░ рдХреБрдЫ рд▓рд┐рдВрдХ рджрд┐рдЦрд╛рдПрдВред рдХреНрдпрд╛ рд╣рдо рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рд╡рд┐рдХреА рдкреЗрдЬ рдЬреЛрдбрд╝реЗрдВрдЧреЗ? :)

рдЗрд╕реЗ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди github.com/sorah рдХреЛ рдХреНрд░реЗрдбрд┐рдЯ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВред =)

@Maher4Ever рд╣рд╛рдБ +1 рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рд╕реБрдиреЛ рд╡рд┐рдХреА рдкреЗрдЬ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП!

@ рдЭрд┐рд░рди , рдЕрдЪреНрдЫреА рдЦреЛрдЬ!
@thibaudgg , рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Antti picture Antti  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thibaudgg picture thibaudgg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lastobelus picture lastobelus  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bgentry picture bgentry  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jonmchan picture jonmchan  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ