Как создать рабочие процессы, которые приостанавливают и ждут событий

В рабочих процессах можно легко объединить различные службы в автоматизированный рабочий процесс . В некоторых случаях может потребоваться приостановить выполнение рабочего процесса и дождаться ввода данных. Этими входными данными могут быть одобрение человека или внешняя служба, перезванивающая с данными, необходимыми для завершения рабочего процесса.

С помощью обратных вызовов рабочих процессов рабочий процесс может создать конечную точку HTTP и приостановить выполнение до тех пор, пока не получит обратный вызов HTTP для этой конечной точки. Это очень полезно для создания рабочих процессов типа «человек посередине». В предыдущем сообщении в блоге Гийом Лафорж показал , как создать автоматизированный рабочий процесс перевода с проверкой человеком с помощью обратных вызовов.

Обратные вызовы — это прекрасно, но кто-то (или какая-то служба) должен знать конечную точку обратного вызова и выполнить HTTP-вызов этой конечной точке. Кроме того, многие службы отправляют или генерируют события вместо вызова конечных точек HTTP. Было бы неплохо, если бы вы могли приостанавливать выполнение рабочего процесса и возобновлять его при получении определенного события? Например, вы можете использовать эту возможность для создания рабочих процессов, которые приостанавливаются и ждут нового сообщения из темы Pub/Sub или нового файла, который будет создан в корзине Cloud Storage.

Обратные вызовы событий

Хотя рабочие процессы не предоставляют готовые обратные вызовы событий, можно заставить выполнение рабочего процесса ожидать события с помощью обратных вызовов, Firestore и Eventarc.

Идея состоит в том, чтобы использовать Firestore для хранения сведений об обратном вызове из вашего исходного рабочего процесса, использовать Eventarc для прослушивания событий из различных источников событий и использовать второй рабочий процесс, запускаемый событием, для получения событий от Eventarc и обратного вызова к конечным точкам обратного вызова в исходном рабочем процессе.

Архитектура

Вот настройка более подробно:

  1. Рабочий callback-event-sampleпроцесс ( yaml ) создает обратный вызов для источника событий, от которого он заинтересован в ожидании событий.
  2. Он хранит информацию обратного вызова для источника события в документе в Firestore.
  3. Он продолжает свой рабочий процесс и в какой-то момент начинает ждать события.
  4. Тем временем callback-event-listener( yaml ) готов к запуску событиями из темы Pub/Sub и корзины облачного хранилища с Eventarc.
  5. В какой-то момент Eventarc получает событие и запускает прослушиватель событий.
  6. Прослушиватель событий находит документ для источника события в Firestore.
  7. Прослушиватель событий вызывает обратно все URL-адреса обратного вызова, зарегистрированные в этом источнике событий. callback-event-sampleрабочий процесс получает событие через свою конечную точку обратного вызова и прекращает ожидание.
  8. Он удаляет URL-адрес обратного вызова из Firestore и продолжает его выполнение.

Подробные инструкции по настройке вместе с определениями рабочего процесса YAML находятся на GitHub .

Тест

Чтобы протестировать обратные вызовы событий, сначала выполните пример рабочего процесса:

gcloud workflows run callback-event-sample

После запуска рабочий процесс приостановится и будет ждать, что вы можете подтвердить по его рабочему состоянию в Google Cloud Console:

Чтобы протестировать обратные вызовы Pub/Sub, отправьте сообщение Pub/Sub:

TOPIC =topic-callback
gcloud pubsub topics publish $TOPIC --message= "Hello World"

В журналах рабочего процесса вы должны увидеть, что рабочий процесс запустился и остановился в ожидании события:

Started waiting for an event from source topic-callback
Stopped waiting for an event from source topic-callback

Чтобы протестировать события Cloud Storage, загрузите новый файл в Cloud Storage:

BUCKET = $PROJECT_ID-bucket-callback
echo "Hello World" > random.txt gsutil cp random.txt
gs://$BUCKET/random.txt

Вы должны увидеть, что рабочий процесс запустился и остановился в ожидании события:

Начато ожидание события из источника $PROJECT_ID-bucket-callback Прекращено ожидание события из источника $PROJECT_ID-bucket-callback

На этом этапе рабочий процесс должен прекратить выполнение, и вы также должны увидеть полученные события Pub/Sub и Cloud Storage в выходных данных:

В этом сообщении блога рассказывается, как создавать рабочие процессы, ожидающие событий Pub/Sub и облачного хранилища, с помощью обратных вызовов, Firestore и Eventarc. Вы можете расширить образец для прослушивания любых событий, которые поддерживает Eventarc . Не стесняйтесь обращаться ко мне в Твиттере @meteatamel с любыми вопросами или отзывами.

Ссылка: https://medium.com/google-cloud/creating-workflows-that-pause-and-wait-for-events-4da201741f2a

#workflow 

What is GEEK

Buddha Community

Как создать рабочие процессы, которые приостанавливают и ждут событий

Как создать рабочие процессы, которые приостанавливают и ждут событий

В рабочих процессах можно легко объединить различные службы в автоматизированный рабочий процесс . В некоторых случаях может потребоваться приостановить выполнение рабочего процесса и дождаться ввода данных. Этими входными данными могут быть одобрение человека или внешняя служба, перезванивающая с данными, необходимыми для завершения рабочего процесса.

С помощью обратных вызовов рабочих процессов рабочий процесс может создать конечную точку HTTP и приостановить выполнение до тех пор, пока не получит обратный вызов HTTP для этой конечной точки. Это очень полезно для создания рабочих процессов типа «человек посередине». В предыдущем сообщении в блоге Гийом Лафорж показал , как создать автоматизированный рабочий процесс перевода с проверкой человеком с помощью обратных вызовов.

Обратные вызовы — это прекрасно, но кто-то (или какая-то служба) должен знать конечную точку обратного вызова и выполнить HTTP-вызов этой конечной точке. Кроме того, многие службы отправляют или генерируют события вместо вызова конечных точек HTTP. Было бы неплохо, если бы вы могли приостанавливать выполнение рабочего процесса и возобновлять его при получении определенного события? Например, вы можете использовать эту возможность для создания рабочих процессов, которые приостанавливаются и ждут нового сообщения из темы Pub/Sub или нового файла, который будет создан в корзине Cloud Storage.

Обратные вызовы событий

Хотя рабочие процессы не предоставляют готовые обратные вызовы событий, можно заставить выполнение рабочего процесса ожидать события с помощью обратных вызовов, Firestore и Eventarc.

Идея состоит в том, чтобы использовать Firestore для хранения сведений об обратном вызове из вашего исходного рабочего процесса, использовать Eventarc для прослушивания событий из различных источников событий и использовать второй рабочий процесс, запускаемый событием, для получения событий от Eventarc и обратного вызова к конечным точкам обратного вызова в исходном рабочем процессе.

Архитектура

Вот настройка более подробно:

  1. Рабочий callback-event-sampleпроцесс ( yaml ) создает обратный вызов для источника событий, от которого он заинтересован в ожидании событий.
  2. Он хранит информацию обратного вызова для источника события в документе в Firestore.
  3. Он продолжает свой рабочий процесс и в какой-то момент начинает ждать события.
  4. Тем временем callback-event-listener( yaml ) готов к запуску событиями из темы Pub/Sub и корзины облачного хранилища с Eventarc.
  5. В какой-то момент Eventarc получает событие и запускает прослушиватель событий.
  6. Прослушиватель событий находит документ для источника события в Firestore.
  7. Прослушиватель событий вызывает обратно все URL-адреса обратного вызова, зарегистрированные в этом источнике событий. callback-event-sampleрабочий процесс получает событие через свою конечную точку обратного вызова и прекращает ожидание.
  8. Он удаляет URL-адрес обратного вызова из Firestore и продолжает его выполнение.

Подробные инструкции по настройке вместе с определениями рабочего процесса YAML находятся на GitHub .

Тест

Чтобы протестировать обратные вызовы событий, сначала выполните пример рабочего процесса:

gcloud workflows run callback-event-sample

После запуска рабочий процесс приостановится и будет ждать, что вы можете подтвердить по его рабочему состоянию в Google Cloud Console:

Чтобы протестировать обратные вызовы Pub/Sub, отправьте сообщение Pub/Sub:

TOPIC =topic-callback
gcloud pubsub topics publish $TOPIC --message= "Hello World"

В журналах рабочего процесса вы должны увидеть, что рабочий процесс запустился и остановился в ожидании события:

Started waiting for an event from source topic-callback
Stopped waiting for an event from source topic-callback

Чтобы протестировать события Cloud Storage, загрузите новый файл в Cloud Storage:

BUCKET = $PROJECT_ID-bucket-callback
echo "Hello World" > random.txt gsutil cp random.txt
gs://$BUCKET/random.txt

Вы должны увидеть, что рабочий процесс запустился и остановился в ожидании события:

Начато ожидание события из источника $PROJECT_ID-bucket-callback Прекращено ожидание события из источника $PROJECT_ID-bucket-callback

На этом этапе рабочий процесс должен прекратить выполнение, и вы также должны увидеть полученные события Pub/Sub и Cloud Storage в выходных данных:

В этом сообщении блога рассказывается, как создавать рабочие процессы, ожидающие событий Pub/Sub и облачного хранилища, с помощью обратных вызовов, Firestore и Eventarc. Вы можете расширить образец для прослушивания любых событий, которые поддерживает Eventarc . Не стесняйтесь обращаться ко мне в Твиттере @meteatamel с любыми вопросами или отзывами.

Ссылка: https://medium.com/google-cloud/creating-workflows-that-pause-and-wait-for-events-4da201741f2a

#workflow 

Как создать и управлять кластером и конфигурацией AWS MSK

Apache Kafka обеспечивает асинхронную связь в распределенной экосистеме. Это позволяет производителям публиковать сообщения по темам, которые затем принимаются потребителями, заинтересованными в этих темах. Как концепция, модели паб-саб существуют уже целую вечность. Однако красота Kafka заключается в том, как — используя разделы и группы потребителей, Kafka может масштабировать скорость потребления сообщений с минимальными затратами на разработку и экономию. В этом руководстве я расскажу, как подготовить управляемый кластер Kafka с помощью сервиса AWS Managed Stream for Kafka (MSK). Мы будем использовать бессерверную структуру для создания и обслуживания инфраструктуры для MSK и поддерживающих VPC, подсетей и т. д.

Этот учебник предполагает хорошее понимание Kafka и способов его настройки. Мы рассмотрим развертывание и обновление службы Apache Kafka (кластеры и конфигурация).

Предпосылки

  • Апач Кафка
  • Основы бессерверной среды
  • Активный аккаунт AWS

MSK (управляемая потоковая передача для Kafka)

Amazon предоставляет управляемый сервис Apache Kafka под названием MSK (Managed Streaming for Kafka). MSK позволяет создавать масштабируемые приложения Kafka, готовые к работе. Он абстрагирует предоставление инфраструктуры для масштабирования и управления кластером. К кластеру Kafka привязана конфигурация MSK.

В этом руководстве мы будем использовать бессерверную структуру для следующих целей:

  • Создание кластера MSK
  • Создание конфигурации кластера MSK
  • Присоединение ревизии конфигурации к кластеру
  • Развертывание этого в учетной записи AWS и его проверка

1. Начиная с бессерверного проекта

Пожалуйста, клонируйте этот стартовый проект. Это поставляется с готовой поддержкой для предоставления VPC, подсетей, IGW, таблиц маршрутизации и т. д. Я настоятельно рекомендую пройтись по каталогу resources/config, чтобы ознакомиться с тем, как все было настроено.

Клонируйте репозиторий и установите зависимости с помощью npm.

git clone git@github.com:wednesday-solutions/msk-kafka-starter.git
cd msk-starter-template
npm i

💡 Совет: подсети для MSK нужно настраивать тщательно. Вам нужны две подсети в двух разных зонах доступности (AZ), если вы находитесь в регионе Запад США (Северная Калифорния). Во всех остальных регионах можно указать либо две, либо три подсети. Все ваши подсети должны находиться в разных зонах доступности. При создании кластера MSK равномерно распределяет узлы брокера.

Для этого руководства мы создадим три частные подсети в регионе ap-south-1 , и в каждой подсети будет 256 IP-адресов. Я также позаботился о том, чтобы подсети находились в разных зонах доступности. У нас также есть одна общедоступная подсеть, которая направляет трафик на интернет-шлюз (IGW), который позволяет компонентам внутри VPC обмениваться данными с Интернетом.

2. Создайте конфигурацию MSK

Начнем с создания конфигурации Kafka. Создаем конфигурацию в файле server.properties .

vi assets/server.properties

Добавьте в файл следующее.

auto.create.topics.enable = true #1
zookeeper.connection.timeout.ms = 1000 #2
log.roll.ms = 604800000 #3

Выше представлена ​​минималистичная конфигурация со следующими настройками:

  1. Включает автоматическое создание тем на сервере
  2. Максимальное время ожидания клиента для установления соединения с zookeeper.
  3. Период времени, по истечении которого Kafka принудительно прокручивает журнал, даже если файл сегмента не заполнен.

Вот полный список свойств, которые можно настроить.

Теперь напишем бессерверный ресурс для создания конфигурации кластера.

vi resources/apache-kafka/msk-config.ymlResources:
  ServerlessMSKConfiguration:
    Type: AWS::MSK::Configuration
    Properties:
      Description: cluster for msk cluster-${sls:stage}
      Name: msk-cluster-config-${sls:stage}-config
      ServerProperties: ${file('./assets/server.properties')} #1

Ключ ServerProperties ссылается на вновь созданный файл server.properties .

Вот и все. Это все, что вам нужно для создания ревизии вашей конфигурации. Последующие изменения в конфигурации создадут новую версию. Обновленный номер версии должен быть указан в MSK.

3. Создайте кластер Kafka

Давайте создадим кластер Kafka, который будет ссылаться на конфигурацию кластера. Откройте файл serverless.yml и добавьте следующее.

#serverless.yml
resources:
  ...
 - ${file('./resources/apache-kafka/msk.yml')}

Затем выполните следующую команду.

vi resources/apache-kafka/msk.yml

Скопируйте приведенный ниже раздел в файл.

Resources:
  ServerlessMSK:
    Type: AWS::MSK::Cluster
    Properties:
      ClusterName: ${self:service}-${self:provider.stage}-msk #1
      KafkaVersion: 2.6.2 #2
      BrokerNodeGroupInfo:
        InstanceType: kafka.t3.small #3
        ClientSubnets: #4
          - !Ref ServerlessPrivateSubnet1 
          - !Ref ServerlessPrivateSubnet2 
          - !Ref ServerlessPrivateSubnet3
        SecurityGroups: #5
          - !GetAtt ServerlessMSKSecurityGroup.GroupId
        StorageInfo: #6
          EBSStorageInfo:
            VolumeSize: 10
      NumberOfBrokerNodes: 3 #7
      EncryptionInfo:
        EncryptionInTransit:
          ClientBroker: TLS
          InCluster: true
      EnhancedMonitoring: PER_TOPIC_PER_BROKER
      ConfigurationInfo: #8
        Arn: !GetAtt ServerlessMSKConfiguration.Arn
        Revision: 1
  1. Имя кластера добавляется к этапу, что упрощает развертывание в разных средах.
  2. Версия Kafka, которую мы используем, — 2.6.2.
  3. В этом руководстве мы использовали экземпляр kafka.t3.small, настройте его в соответствии с потребностями вашего приложения.
  4. Ранее созданные подсети связаны с кластером
  5. Ранее созданные группы безопасности связываются с кластером
  6. Вы можете настроить хранилище, предоставленное с помощью этого параметра.
  7. Количество узлов брокера, которое является критическим фактором для высокой доступности и избыточности, можно настроить с помощью свойства NumberoOfBrokerNodes.
  8. Свойство ConfigurationInfo управляет конфигурацией Kafka по умолчанию. Мы ссылаемся на ранее созданную конфигурацию и соответствующий номер версии.

Развертывания

Разверните приложение с помощью следующей команды

npm run deploy:development

Перед запуском скрипта убедитесь, что для следующих переменных среды заданы правильные значения.

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

Кроме того, вы можете разветвить репозиторий, установить вышеуказанное как секреты Github, отправить его в свою основную ветку и позволить уже настроенному конвейеру компакт-дисков позаботиться обо всем остальном. Как только ваш конвейер успешно запустится, проверьте свой только что созданный кластер в консоли!

Свойство конфигурации кластера

Развернутый кластер MSK в консоли AWS

Куда пойти отсюда?

Если в какой-то момент вы почувствуете, что застряли, полный пример с работающим CI/CD можно найти здесь .

Надеюсь, вам понравилось читать и следовать этому руководству так же, как и мне, когда он писался.

Замечательные ребята из Wednesday Solutions создали репозиторий примеров приложений с использованием бессерверной среды. Я хотел бы получить ваши мысли об этом и, возможно, истории о том, как это облегчило/улучшило ваш рабочий процесс разработки.

Ссылка: https://medium.com/faun/creating-and-managing-an-aws-msk-cluster-and-configuration-2e5be0d6993f

#aws #kappa

Как создать формы регистрации и входа с помощью HTML и CSS

В этой статье вы узнаете, как создавать формы регистрации и входа с помощью HTML и CSS. Я поделился другим фрагментом кода, основанным на том, как создать простую форму входа. В этом руководстве я создал форму регистрации и входа с помощью HTML и CSS. Если вам понравилась эта статья, подпишитесь на мой канал YouTube - Code Info

HTML-формы необходимы для сбора различных типов пользовательских данных, таких как контактная информация, такая как имя, адрес электронной почты, номер телефона, данные кредитной карты и т. Д.

HTML-форма создается с помощью тега <form> </form>, и в этом теге у вас будут все элементы ввода для получения пользовательского ввода. Веб-форма или HTML-форма очень гибкие и могут иметь множество полей ввода разных типов, таких как текстовые поля, сохраненные пароли, переключатели, поля со списком и т. Д.
 

Формы содержат уникальные элементы, называемые элементами управления, такие как поля ввода, флажки, переключатели, кнопки отправки и т. Д. Клиенты часто заполняют форму, улучшая ее элементы управления, например: вводят текстовое содержимое, выбирают виджеты и т. Д. И отправляют эту форму в веб-сервер для дальнейшей обработки.

Исходный код:

Если вам нравится этот дизайн формы входа, не стесняйтесь использовать его в своем проекте. Скопируйте код, нажав кнопку «Копировать» ниже.

Сначала вам нужно создать два файла. Один из них - HTML, а другой - CSS. После создания файла вставьте приведенный ниже код.

КОД HTML:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Sign Up | By Code Info</title>
    <link rel="stylesheet" href="Css/style.css" />
    <link
      href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>
    <div class="signup-box">
      <h1>Sign Up</h1>
      <h4>It's free and only takes a minute</h4>
      <form>
        <label>First Name</label>
        <input type="text" placeholder="" />
        <label>Last Name</label>
        <input type="text" placeholder="" />
        <label>Email</label>
        <input type="email" placeholder="" />
        <label>Password</label>
        <input type="password" placeholder="" />
        <label>Confirm Password</label>
        <input type="password" placeholder="" />
        <input type="button" value="Submit" />
      </form>
      <p>
        By clicking the Sign Up button,you agree to our <br />
        <a href="#">Terms and Condition</a> and <a href="#">Policy Privacy</a>
      </p>
    </div>
    <p class="para-2">
      Already have an account? <a href="login.html">Login here</a>
    </p>
  </body>
</html>

Login HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Login | By Code Info</title>
    <link rel="stylesheet" href="Css/style.css" />
    <link
      href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>
    <div class="login-box">
      <h1>Login</h1>
      <form>
        <label>Email</label>
        <input type="email" placeholder="" />
        <label>Password</label>
        <input type="password" placeholder="" />
        <input type="button" value="Submit" />
      </form>
    </div>
    <p class="para-2">
      Not have an account? <a href="signup.html">Sign Up Here</a>
    </p>
  </body>
</html>

Во-вторых, создайте файл CSS с именем style.css и вставьте указанные коды в свой файл CSS. Помните, вы должны создать файл с расширением .css.
 

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Sign Up | By Code Info</title>
    <link rel="stylesheet" href="Css/style.css" />
    <link
      href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>
    <div class="signup-box">
      <h1>Sign Up</h1>
      <h4>It's free and only takes a minute</h4>
      <form>
        <label>First Name</label>
        <input type="text" placeholder="" />
        <label>Last Name</label>
        <input type="text" placeholder="" />
        <label>Email</label>
        <input type="email" placeholder="" />
        <label>Password</label>
        <input type="password" placeholder="" />
        <label>Confirm Password</label>
        <input type="password" placeholder="" />
        <input type="button" value="Submit" />
      </form>
      <p>
        By clicking the Sign Up button,you agree to our <br />
        <a href="#">Terms and Condition</a> and <a href="#">Policy Privacy</a>
      </p>
    </div>
    <p class="para-2">
      Already have an account? <a href="login.html">Login here</a>
    </p>
  </body>
</html>

Login HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Login | By Code Info</title>
    <link rel="stylesheet" href="Css/style.css" />
    <link
      href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>
    <div class="login-box">
      <h1>Login</h1>
      <form>
        <label>Email</label>
        <input type="email" placeholder="" />
        <label>Password</label>
        <input type="password" placeholder="" />
        <input type="button" value="Submit" />
      </form>
    </div>
    <p class="para-2">
      Not have an account? <a href="signup.html">Sign Up Here</a>
    </p>
  </body>
</html>

Как создать и продать NFT

Как сделать и продать NFT - это то, о чем сейчас спрашивают многие художники. Невзаимозаменяемые токены продолжают попадать в заголовки новостей и вызывать споры из-за умопомрачительных цен, по которым были проданы некоторые предметы искусства NFT, поэтому вы вполне можете задаться вопросом, могут ли NFT стать средством исследования для вашей собственной творческой работы. Что ж, эта статья объяснит процесс создания NFT и как продать NFT.

Однако давайте просто проверим реальность, прежде чем идти дальше. Да, это правда, что некоторые произведения искусства NFT продавались по сумасшедшим ценам. Beeple's Everydays - Первые 5000 дней, проданные на Christie's за 69 миллионов долларов в марте 2021 года, и более десятка NFT были проданы на сумму более 1 миллиона долларов. Еще несколько десятков получили цены в сотни тысяч, в том числе Bored Ape # 599 (на фото выше), который, как сообщается, был куплен комиком Джимми Фэллоном за 224 000 долларов в ноябре.

Однако продажи работ Бипла или предметов из коллекций NFT, таких как Bored Ape Yacht Club и CryptoPunks, по-прежнему являются редким исключением. Во многих случаях, даже если вам удастся продать произведение искусства NFT, вы, вероятно, обнаружите, что большая часть продажи будет поглощена комиссионными. Компании, которые создают и поддерживают NFT и обеспечивают продажи, взимают с художников NFT различные как авансовые, так и послепродажные сборы, которые могут даже оставить вас без средств в зависимости от того, за сколько продается ваш NFT. 

Как создать и продать NFT

Если вы понимаете, что такое NFT на самом деле, и хотите узнать, как создавать и продавать NFT, читайте дальше, и мы проведем вас через этот процесс. Первое, что нужно сделать, это выбрать платформу NFT, на которой вы будете создавать и продавать свой NFT, а также платежный кошелек, который вам нужно будет использовать для оплаты комиссий - и для получения оплаты, если ваша работа будет продаваться.

Существует множество онлайн-платформ, через которые вы можете создавать и продавать NFT. Популярные аукционные платформы NFT включают OpenSea, Rarible, SuperRare, Nifty Gateway (использованную Пэрис Хилтон для аукциона с ее любопытной Crypto Queen NFT, изображенной выше), Foundation, VIV3, BakerySwap, Axie Marketplace и NFT ShowRoom. Платежные платформы NFT также изобилуют популярными вариантами, включая Coinbase, MetaMask, Torus, Portis, WalletConnect, MyEtherWallet и Fortmatic. 

Исключительно для иллюстративных целей в этом руководстве мы продемонстрируем процесс создания и продажи NFT с использованием платформы NFT Rarible и платформы оплаты криптовалютой MetaMask. Обратите внимание, что это никоим образом не означает, что любой из этих сервисов является лучшим для использования. Вы можете рассмотреть возможность использования любой из упомянутых выше платформ и многих других. В целом процесс будет аналогичным, но мы рекомендуем всегда как можно тщательнее проверять размер комиссии (подробнее об этом позже).

01. Купите криптовалюту.

Первое, о чем следует знать, это то, что все упомянутые выше аукционные платформы NFT захотят внести предоплату, чтобы «чеканить» ваш NFT, превратив ваши произведения искусства в невзаимозаменяемый токен, который вы затем сможете продать. Как правило, они хотят платить в криптовалюте, поэтому, прежде чем у вас появится возможность заработать криптовалюту, вам нужно будет ее купить, чтобы покрыть комиссию. Большинство платформ взимают плату в эфире (сокращенно ETH), собственной криптовалюте платформы блокчейна с открытым исходным кодом Ethereum, где впервые были запущены NFT.

Если у вас уже есть немного ETH, вам необходимо убедиться, что он у вас есть в цифровом кошельке, который вам нужно будет подключить к выбранной вами платформе NFT, чтобы иметь возможность совершать (и получать) платежи. Если вам нужно их купить, для этого существует множество бирж криптовалют, но самый быстрый и простой вариант - это купить ETH напрямую с помощью выбранного вами цифрового кошелька.

Как мы уже упоминали, для этого есть много вариантов, но для иллюстрации процесса мы будем использовать MetaMask , который доступен как расширение браузера и как мобильное приложение. Если вы предпочитаете использовать другую услугу или если вы знакомы с цифровыми кошельками и уже имеете один, переходите сразу к шагу 4, иначе мы поговорим с вами, как настроить ваш кошелек и купить ETH на следующем шаге.

02. Создайте свой цифровой кошелек.

Чтобы создать цифровой кошелек с помощью MetaMask, вам нужно перейти на его веб-сайт и нажать синюю кнопку «Загрузить» в правом верхнем углу. Поскольку мы используем настольный компьютер, мы выберем вариант установки расширения для браузера, но есть еще и мобильное приложение.

Вам будет предложено подтвердить, что вы хотите «создать новый кошелек и начальную фразу». Не беспокойтесь слишком сильно о том, что означает «исходная фраза» (это в основном список слов, в которых хранится информация о блокчейне). Скажите «да», тогда вам просто нужно согласиться с условиями, создать пароль и предпринять некоторые меры безопасности, после чего ваша учетная запись будет настроена.

03. Добавьте криптовалюту в свой кошелек.

После того, как вы настроили свой кошелек MetaMask или любой цифровой кошелек, вам нужно добавить в него немного ETH. Если у вас еще нет ETH, вам нужно купить его сейчас, поэтому нажмите кнопку «Купить» и выберите вариант «Купить ETH с помощью Wyre». Вы попадете на экран, где вы можете использовать Apple Pay или дебетовую карту для покупки ETH. Обратите внимание: если вы пока не хотите расставаться ни с какими деньгами, вы можете оставить этот этап на потом; для этого просто требуется немного больше ошибок (вы захотите проверить плату за выбранную вами платформу NFT, чтобы узнать, сколько вам нужно купить).

Жаргон, связанный с миром криптовалют, может сделать его довольно пугающим, но на самом деле купить валюту очень легко. Просто имейте в виду, что, как и биткойн и многие другие криптовалюты, ценность эфира может сильно колебаться. Только в 2021 году цена 1 ETH упала с 1000 долларов до около 4700 долларов на момент написания, с множеством пиков и спадов на подходе. Вполне возможно, что цена на валюту изменится на несколько сотен долларов США всего за несколько часов.

04. Подключите свой кошелек к платформе NFT.

Большинство цифровых кошельков работают аналогичным образом. Какой бы из них вы ни выбрали, вам необходимо подключить его к платформе NFT, которую вы будете использовать для создания своей NFT. В иллюстративных целях мы используем Rarible, но есть много других платформ NFT на выбор, и процесс в целом будет аналогичен описанному ниже.

Перейдите на Rarible.com (показано выше). В правом углу экрана есть кнопка «Подключить кошелек». Щелкните здесь, и на следующем экране вам будет предложено указать поставщика вашего кошелька, в нашем случае это MetaMask. Во всплывающем окне вы сможете подключить свой кошелек к Rarible. Нажмите «Далее», затем «Подключиться», примите условия использования и подтвердите, что вам больше 13 лет.

05. Загрузите свой файл

Итак, теперь у вас есть кошелек, связанный с ETH для оплаты, и вы готовы создать NFT своей работы. На сайте Rarible нажмите синюю кнопку «Создать» в правом верхнем углу. Затем вам будет предложено создать одну разовую работу или продать один и тот же предмет несколько раз. В этом примере мы выберем «Одноместный». Теперь вам нужно загрузить цифровой файл, который вы хотите преобразовать в NFT. Rarible принимает файлы PNG, GIF, WEBP, MP4 и MP3 размером до 30 МБ.

 

06. Настроить аукцион.

В следующей части формы вам нужно будет выбрать, как продавать свои работы NFT. Есть три варианта. «Фиксированная цена» позволяет вам установить цену и мгновенно продать свой NFT (как вариант «Купить сейчас» на eBay). Опция «Неограниченный аукцион» позволит людям делать ставки, пока вы их не примете. Наконец, «Временный аукцион» - это аукцион, который длится только определенное время. Это вариант, который мы выберем в качестве примера.

Это подводит нас к самому сложному: выбору минимальной цены. Продавайте свои NFT слишком дешево, и огромные комиссии поглотят вашу прибыль, возможно, даже выйдя из кармана. Мы установим нашу цену на амбициозном уровне 1 ETH (в настоящее время 4700 долларов США) и дадим людям семь дней для подачи заявок.

Затем вы получаете возможность «Разблокировать после покупки». Это дает вам возможность предоставить вашему потенциальному покупателю полную версию вашего искусства в высоком разрешении и / или дополнительные материалы через секретную веб-страницу или ссылку для скачивания. Ниже приведен наиболее запутанный вариант под названием «Выбрать коллекцию». Это очень технический вопрос о том, как устроен блокчейн. Параметр по умолчанию здесь - «Редкий», и мы советуем оставить его таким. 

07. Опишите свой NFT.

Теперь вы можете добавить заголовок и описание для своего объявления. Чтобы максимизировать вероятность того, что ваш NFT будет продаваться, вам следует подумать об этом. Затем вас просят подумать, какой процент гонораров вы хотите требовать от перепродажи своего искусства в будущем. 

Опять же, это баланс, так как более высокий процент принесет вам больше денег с каждой продажи в долгосрочной перспективе, но это также будет удерживать людей от перепродажи вашего искусства в первую очередь, поскольку они с меньшей вероятностью получат прибыль за самих себя. Наконец, есть необязательное поле для добавления свойств вашего файла. С этим готово, вы почти закончили. 

08. Оплатите пошлину (но будьте осторожны)

Нажмите «Создать элемент», и вам будет предложено подключиться к вашему кошельку для оплаты листингового сбора. Если у вас недостаточно средств в кошельке, не волнуйтесь: вам не придется начинать заново. Просто нажмите на значок кошелька в правом верхнем углу экрана, и вам будет предоставлена ​​возможность добавить средства прямо в Rarible. 

Прежде чем сделать это, просто последнее предупреждение. Плата за листинг может показаться невысокой: в нашем случае она составила всего 5,91 доллара США. Но это только начало. Прежде чем вы сможете пойти дальше, вам придется согласиться на дополнительную плату за фактическую генерацию вашего NFT, которая в нашем случае была бы эквивалентом 42,99 доллара США в ETH. Если кто-то действительно покупает ваш NFT, вам придется заплатить комиссию за продажу NFT, а также комиссию за перевод денег из кошелька покупателя в ваш собственный. По нашему мнению, в то время, когда мы это пробовали, на веб-сайте Rarible ничего из этого не было предельно ясно.

Мы хотели бы иметь возможность ясно и просто объяснить, как рассчитать потенциальную стоимость создания и продажи NFT, но запутанный характер технологии блокчейн, дикие колебания стоимости криптовалюты и отсутствие прозрачности на самих платформах. сделать это невыполнимой задачей. На самом деле вам остается рискнуть, подождать и посмотреть, сколько вы получите в целом, если сделаете продажу, и надеяться, что вы все равно получите прибыль.

Однако, если вы хотите поиграть и потратить немного денег на создание NFT-арта, мы желаем вам удачи.

Перекомпилируйте с: https://www.creativebloq.com/how-to/make-and-sell-an-NFT 

Как создать приложение с ReactJS и NodeJS

В современном мире разработки важность React как библиотеки JavaScript хорошо известна. Точно так же его комбинация с Node.js на стороне сервера может быть использована для получения мощной комбинации. В этой статье мы в первую очередь рассмотрим, как можно создать приложение, используя ReactJS во внешнем интерфейсе и Node.js во внутреннем.

Установка и установка

В этом разделе мы обсудим настройку полнофункциональной среды. Передняя часть будет ReactJS, а задняя часть - NodeJS.

Установка ReactJS

Сначала мы проверим простые шаги по установке внешнего интерфейса ReactJS. Откройте рабочий каталог и пошагово выполните следующие команды. Вы можете сделать любой каталог своим рабочим каталогом. Помните, что рабочий каталог должен быть отдельной рабочей областью, в которой вы устанавливаете среду и запускаете приложение.

  1. mkdir eduonix_react_example
  2. npm i -g create-react-app
  3. cd eduonix_react_example
  4. create-react-app eduonix_client
  5. cd client
  6. npm start

Ниже приведен образец package.json, созданный из указанной выше конфигурации. В этом примере мы использовали порт листинга как 3001. Вы можете использовать любой другой открытый порт и соответствующим образом изменить файл package.json.

Листинг 1: Образец package.jsonфайла

</p>
 
<pre class="lang:js decode:true">{
“name”: “eduonix_client”,
“version”: “0.1.0”,
“private”: true,
“proxy”: “http://localhost:3001/“,
“dependencies”: {
“react”: “16.8.6”,
“react-dom”: “16.8.6”,
“react-scripts”: “3.0.1”
},
“scripts”: {
“start”: “react-scripts start”,
“build”: “react-scripts build”,
“test”: “react-scripts test?-?env=jsdom”,
“eject”: “react-scripts eject”
}
}</pre>
<p align="justify">

Теперь наша настройка React завершена. Мы можем проверить это, открыв локальный хост на порту 3000.

Установка NodeJS

Теперь мы проверим пошаговый процесс настройки сервера NodeJS. Здесь мы будем использовать платформу Express. Выполните следующие действия, чтобы установить и запустить сервер NodeJS.

  1. cd eduonix_react_example
  2. mkdir eduonix_server
  3. npm install express-generator -g
  4. express - - view=ejs server
  5. cd eduonix_server
  6. npm install
  7. Перейдите в папку сервера (здесь eduonix_server)
  8. Открыть package.jsonфайл

Пакет package.json будет таким, как показано ниже. Здесь нам нужно внести незначительные изменения в номер порта. Нам нужно использовать какой-то другой порт, а не 3000. Потому что наш интерфейсный компонент React работает на порту 3000. Давайте сделаем его 3001 или любым другим. Теперь настроенный Node.JS готов к подключению.

Листинг 2: Пример файла package.json (для сервера NodeJS)

{
“name”: “eduonix_server”,
“version”: “0.0.0”,
“private”: true,
“scripts”: {
“start”: “nodemon ./bin/www”
},
“dependencies”: {
“cookie-parser”: “~1.4.3”,
“debug”: “~2.6.9”,
“ejs”: “~2.5.7”,
“express”: “~4.16.0”,
“http-errors”: “~1.6.2”,
“morgan”: “~1.9.0”,
“nodemon”: “¹.17.5”
},
“main”: “app.js”,
“devDependencies”: {},
“keywords”: [],
“author”: “Eduonix”,
“license”: “ISC”,
“description”: “”
}

Подключение ReactJS и NodeJS

В этом разделе мы подключим интерфейс к внутреннему серверу. Выполните следующие действия, чтобы подключить ReactJS к серверу Node.

  1. Go to eduonix_react_example
  2. npm init –y
  3. Теперь отдельный package.jsonфайл будет создан вне папки сервера и клиента.

Файл package.json будет выглядеть так.

Листинг 3: Пример файла package.json (для подключения к серверу узлов)

</p>
 
<pre class="lang:js decode:true">{
“name”: “connect_node”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“client”: “cd eduonix_client &amp;&amp; npm start”,
“server”: “cd eduonix_server &amp;&amp; npm start”,
“start”: “concurrently?-?kill-others \”npm run eduonix_server\" \"npm run eduonix_client\""
},
“keywords”: [],
“author”: “Eduonix”,
“license”: “ISC”,
“devDependencies”: {
“concurrently”: “³.5.1”
}
}</pre>
<p align="justify">

Теперь наши ReactJS и NodeJS запущены и работают на портах 3000 и 3001. Итак, вы можете соединять интерфейс и серверную часть для создания различных приложений.

Вывод

React и NodeJS - определенно мощная комбинация, и это именно то, что было продемонстрировано в этой статье. Он дает вам базовое представление о том, что такое React и NodeJS, и проводит вас через образец приложения, чтобы помочь вам познакомиться с концепциями. Вы также можете узнать больше о подключении приложения React к Nodejs и о том, как стать разработчиком React.