1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hyperledger-cactus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
FAQ.md 24 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 23:00 649ad0f

Часто задаваемые вопросы - Hyperledger Cacti - 1. Какие минимальные и рекомендованные характеристики аппаратного обеспечения требуются? Есть ли у вас интересная история на этот счёт?

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

  • Минимально необходимое для общего развития (построение кода, запуск тестов и т.д.) будет около 2 ядер процессора (4 потока) и OnClickListener 6 ГБ свободной оперативной памяти.

  • Рекомендованная конфигурация для машины разработчика, по моему мнению, должна быть 16 ГБ оперативной памяти, 4 ядра процессора (8 потоков) и, конечно же, SSD для постоянного хранения данных.

  • Для Apple M1 (система на базе ARM) рекомендуется установить nvm через Terminal с использованием Rosetta (и каждую другую утилиту, которая поддерживает только Intel процессоры). Предложение заключается в создании дубликата вашего Terminal с использованием Rosetta, открытии его и установке nvm, а также других необходимых средств разработки. Также обратите внимание на VSCode Insiders, которые могут оказаться полезными в этой ситуации.

  • Интересная история: Петер запустил тесты на VPS с 4 ГБ оперативной памяти однажды, и единственными провалившимися тестами были те, связанные с Corda, так как они требуют больше ресурсов, чем остальные.## 2. Cacti API-Server возвращает ошибку Unauthorized при использовании Postman на локальной машине После установки последней версии Cacti первое тестирование API с помощью Postman показывает ошибку Unauthorized:

    • Причина: Мы решили, что программное обеспечение должно быть безопасным по умолчанию во всем, и позволять кастомизацию/уменьшение безопасности как опциональную функцию вместо того, чтобы начинать с этого состояния.
    • Как включить вручную CORS шаблоны в конфигурационном файле: Откройте config.json и адаптируйте следующие настройки:
      • "authorizationProtocol": "NONE"
      • "apiMtlsEnabled": false
      • "apiTlsEnabled": false
      • Перезапустите Cacti API-Server, чтобы использовать измененные настройки

3. Ошибка code EMFILE (syscall connect) при выполнении команды npm install

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

Вы можете решить эту проблему (при условии, что вы используете рекомендованную операционную систему) путём выполнения команды ниже в терминале, что увеличит указанный лимит до 200 000 с дефолтных 4096.

echo fs.file-max=200000 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

4. Откуда взялось название проекта?

Это было первое название в нашем списке предложенных названий, которое удовлетворяло следующим критериям:1. Это одно, относительно короткое слово. 2. Оно (вероятно, надеюсь) легко произносится на большинстве языков, а не только на английском. 3. Название получил одобрение юридического и маркетингового отделов.

Кроме того: В 2020 году Глобальный форум Hyperledger проходил в Феникс, Аризоне, где некоторые сотрудники (Петр, Джунго, Такума) встретились лицом к лицу впервые. В этом регионе много кактусов, некоторые из которых также были показаны в официальной графике форума.

5. После изменения кода сборка происходит медленно. Что делать?

Попробуйте использовать команду npm run watch, которая будет запускать сборку сразу после сохранения файла с расширением .ts или openapi.json. Она собирает только те пакеты, в которых произошли изменения в исходном коде, поэтому она обычно быстрее примерно в 1-2 порядка скорости по сравнению с npm run build:dev:backend.

Примечание: Чтобы активировать сборку через скрипт наблюдения, вам нужно сделать какое-либо изменение. Поэтому если вы запустили скрипт после внесения изменений, быстро сделайте ещё одно изменение, такое как добавление новой строки или что-то подобное, чтобы активировать сохранение файла, что в свою очередь запустит сборку.

6. Скрипт наблюдения завершается ошибкой Internal watch failed: watch ENOSPC

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

echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Stackoverflow.com - Node.JS: Получаю ошибку: [nodemon] Internal watch failed: watch ENOSPC

7. Как мне не собирать весь проект каждый раз при маленьком изменении?

Ответ такой же, как и для Сборка кода после изменения происходит медленно. Что делать?

8. Почему нужны все эти пакеты/монорепозиторий? Это выглядит сложным!

Это немного сложнее, чем наличие одного пакета, но это предоставляет нам гибкость, которую мы требуем для реализации архитектуры плагинов, где люди могут выбирать использовать некоторые пакеты, но не все остальные. Это также позволяет следовать философии Unix, которая заключается в использовании меньших компонентов/инструментов, которые выполняют одну задачу и делают её хорошо (надеюсь).

Есть ещё несколько причин, которые можно упомянуть, но они в основном являются перефразировками вышеупомянутых двух.

9. Создание прототипа и линтер, который блокирует сборку, замедляет меня ненужноУ вас есть несколько вариантов действий, все достигающие примерно того же результата:

  1. Вы можете временно отключить линтер в файле кода, над которым вы работаете, с помощью комментария такого типа: /* eslint-disable */. Обратите внимание, что перед тем как ваш запрос на слияние будет принят, этот комментарий должен быть удален, а ошибки линтера исправлены.
  2. Если вы действительно считаете, что файлы кода или целые директории, над которыми вы работаете, должны вообще не подвергаться проверке линтером, вы можете игнорировать их, добавив шаблон glob в файл .eslintignore, находящийся в корне проекта. Обычно это не рекомендуется, но в некоторых случаях может быть оправдано, например если вы работаете с генератором кода, который создаёт исходный код, который вы не должны менять, так как он перегенерируется при каждом последующем компиляционном процессе.
  3. Другой временный вариант — полностью исключить проверку линтером из процесса сборки путём изменения скрипта npm lint в файле package.json корня проекта, сделав его бесполезным путём замены содержимого скрипта.```json "lint": "echo OK",

## 10. Почему все тесты привязывают прослушиватели HTTP/S к случайной порте?

Это значительно усложняет отладку во время выполнения тестового случая.
Причина, по которой нам это нужно, состоит в том, что если бы мы всегда использовали одни и те же порты, то мы могли бы запускать тесты один за другим, чтобы они не конфликтовали при распределении своих портов. Это не очень практично, так как полный набор тестов уже занимает более часа на момент написания этих строк, и это вероятно увеличится в три раза, если мы начнём запускать тесты последовательно.

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

## 11. HTTP-запросы, отправляемые через Postman/curl/и т.п., зависают, когда я отлаживаю тестовый случай с помощью VSCode, почему?

Когда вы используете остановку выполнения на точке останова (breakpoint), это приостанавливает все активности, а не только сам код тестового случая. Это значит, что ваш запрос HTTP не будет обрабатываться сервером API / плагином до тех пор, пока вы не продолжите выполнение через пользовательский интерфейс (UI) / краткие команды отладчика.Как только вы продолжите выполнение, запросы, которые ранее казались зависшими, должны завершиться успешно.

## 12. Как мне запустить тестовые случаи с моими собственными изображениями реестра?

Соберите и пометьте изображение локально, используя имя, которое не вызывает путаницы с официальными тегами. Измените код теста, чтобы пропустить получение изображения с помощью параметра omitPull метода start — например, замените

```javascript
await this.fabric.start();

на

await this.fabric.start(true);

Затем измените тест, чтобы использовать локально собранное изображение с указанным тегом. Конкретные имена переменных могут различаться между классами тестовых реестров, поэтому убедитесь, что проверили конструкторы для правильной конвенции. Примеры:

Fabric

this.fabric = new FabricTestLedgerV1({
  imageName: "*ваше имя изображения*",
  imageVersion: "*ваш тег изображения*",
  ...
});

Besu

this.besu = new BesuTestLedger({
  containerImageName: "*ваше имя изображения*",
  containerImageVersion: "*ваш тег изображения*",
  ...
});

13. Как мне повторно запустить отдельную задачу в CI через пользовательский интерфейс GitHub?

Для повторного запуска отдельной задачи в CI через пользовательский интерфейс GitHub вам потребуется перейти на страницу конкретной задачи и найти кнопку "Re-run job". После нажатия этой кнопки задача будет заново запущена.Например, предположим, что вы хотите запустить задачу yarn_lint из файла конфигурации ci.yaml. Обычно это становится целью, когда указанная задача является ненадёжной (иногда проваливается без явных причин), и вам нужно повторно выполнить только эту задачу вместо всего набора тестов CI (что очень затратно по времени и ресурсам по сравнению с выполнением одной задачи).1. Сначала вам нужно найти задачу, которую вы хотите повторно запустить, и затем щелкнуть Подробности рядом с ней: 2. Затем, находясь на странице с подробностями, снова найдите задачу в списке слева и обратите внимание на значок обновления рядом с ней. Учитывайте, что этот значок становится видимым только после завершения всей рабочей процедуры (например, всех задач в ней) одним способом или другим (удача или неудача, неважно, главное, чтобы они были завершены).

  1. Также учтите, что значок обновления, показанный на скриншоте выше, станет видимым только при наведении курсора на кнопку. Вы также можете использовать кнопку обновления в правом верхнем углу экрана, чтобы достичь того же результата: pull-request-ci-workflow-details-page-2.png

14. Как исправить скрипт конфигурации, застрявший на ошибке RequestError: connect ETIMEDOUT 2606:4700:6810:223:443 (или аналогичной ошибке)?

Если вы сталкиваетесь с ошибками при запуске скрипта конфигурации, подобными этой:

YN0001: | RequestError: connect ETIMEDOUT 2606:4700:6810:223:443
at ClientRequest.<anonymous> (/home/ubuntu/cacti/.yarn/releases/yarn-4.1.0.cjs:195:14340)
at Object.onceWrapper (node:events:632:26)
at ClientRequest.emit (node:events:529:35)
at o.emit (/home/ubuntu/cacti/.yarn/releases/yarn-4.1.0.cjs:190:90286)
at TLSSocket.socketErrorListener (node:events:501:9)
at TLSSocket.emit (node:events:517:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
.
.
```*Предупреждение*: Изменения, указанные ниже, влияют на то, как IPv6 обрабатывается во всей системе, и могут повлиять на другие приложения.

Иногда значения по умолчанию IPv6 могут привести к невозможности обнаружения реестра npm. Чтобы исправить эту проблему (тестировано на Ubuntu 22.04.4), можно безопасно отключить значения по умолчанию IPv6. Один из способов сделать это (через другой файл конфигурации) следующий:
1. Создайте файл `/etc/sysctl.d/60-ipv6-disable.conf`.
2. Добавьте следующее содержимое в файл:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

1. Запустите службу: `service procps start`.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hyperledger-cactus.git
git@api.gitlife.ru:oschina-mirror/hyperledger-cactus.git
oschina-mirror
hyperledger-cactus
hyperledger-cactus
main