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> |