Probably the easiest way is to use Ruby in Twenty Minutes
| # frozen_string_literal: true | |
| module TTY | |
| module StringIOExtensions | |
| def wait_readable(*) | |
| true | |
| end | |
| def ioctl(*) | |
| 80 |
| # frozen_string_literal: true | |
| source "https://rubygems.org" | |
| git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } | |
| gem "tty-prompt", github: 'piotrmurach/tty-prompt' | |
| gem "tty-testing", github: 'DanielVartanov/tty-testing' | |
| gem "rspec" |
| require 'tty/prompt' | |
| require 'tmpdir' | |
| require 'active_support/core_ext/object/blank' | |
| describe 'chmod-alike app' do | |
| let(:app) do | |
| TTY::Testing.app_wrapper do |stdin, stdout| | |
| prompt = TTY::Prompt.new(input: stdin, output: stdout) | |
| filepath = prompt.ask('Type file name:') | |
| unless filepath.blank? |
| let(:app) do | |
| CLIWrapper.new do |stdin, stdout| | |
| prompt = TTY::Prompt.new(input: stdin, output: stdout) | |
| prompt.yes?('Do you like Ruby?') | |
| prompt.collect do | |
| key(:name).ask('Name?') | |
| key(:age).ask('Age?', convert: :int) | |
| end |
Понятие продуктовод (product manager) ещё не сформировалось и часто путается с ролью project manager, поэтому, если кратко, нужен человек с хорошими мозгами и развитой эмпатией, а мы в ответ обещаем кучу возможностей в работе и в жизни. Ниже будет подробное описание «на пальцах» того, что делает продуктовод и почему он важен для продуктовой IT-компании, какие у нас приблизительные требования и что за условия работы.
Мы делаем софт, программное обеспечение, приложение, называйте как хотите. Его производство и доработка никогда не останавливается, пока жив продукт. Каждую неделю нужно выбирать что мы делаем дальше: пилим новую фичу? если да, то какую? или таки чиним баги? а какие именно? Возможностей миллион, а мы одни, нужно делать трудный выбор из противоречащих друг другу приоритетов, криков разных пользователей и собственного видения продукта. При этом нужно принимать во внимание технические ограничения системы и генеральное напра
| https://www.youtube.com/watch?v=VKen8yYWqJI | |
| https://www.youtube.com/watch?v=f2L8CEPWPy0 | |
| https://www.youtube.com/watch?v=3E7hkPZ-HTk | |
| https://www.youtube.com/watch?v=trVzyG4zFMU | |
| https://www.youtube.com/watch?v=Qyq2ecUvwDk | |
| https://www.youtube.com/watch?v=lZi9H3GmY4E |
| https://www.youtube.com/watch?v=61mOyNH8q8Y | |
| https://www.youtube.com/watch?v=bodJh-dg5I | |
| https://www.youtube.com/watch?v=EBmnGPJNs5k | |
| https://www.youtube.com/watch?v=MfKv1wkDjG | |
| https://www.youtube.com/watch?v=DRJIjwhLQSI | |
| https://www.youtube.com/watch?v=9TYUH1_aE2Q | |
| https://www.youtube.com/watch?v=lJ0Z-1RW1S4 | |
| https://www.youtube.com/watch?v=61mOyNH8q8Y | |
| https://www.youtube.com/watch?v=OG391J51AAc | |
| https://www.youtube.com/watch?v=xC_znTCfZ8Q |
| <h2 align="center">This is your best selling stock:</h2> | |
| <table class="veeqo-table"> | |
| <th>Item</th> | |
| <th>Projected sales</th> | |
| <% @best_sellers.each do |best_seller| %> | |
| <tr> | |
| <td><%= best_seller.variant.full_title %></td> | |
| <td><%= best_seller.projected_sales %></td> | |
| </tr> |