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

OSCHINA-MIRROR/mirrors_trending-questdb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONTRIBUTING.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 12:39 8f9db26

Вклад в проект QuestDB

Привет, рад узнать, что вы заинтересованы в внесении вклада в проект QuestDB. Вот несколько тем, которые помогут вам начать:

Ошибки и возможности

Независимо от того, сообщаете ли вы о баге или предлагаете новую возможность, вы можете создать issue с помощью соответствующего шаблона.

Если вы не уверены, следует ли вам создать issue, вы также можете присоединиться к нашему сообществу Slack каналу и задать свои вопросы там.

Если вы нашли баг безопасности, пожалуйста, обратитесь к файлу SECURITY.md для получения дополнительной информации.

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

Навигация

Обзор репозитория- Исходники базы данных QuestDB и библиотек на Java:

core/src/main/java/

Микро-基准测试应翻译为:

  • Микро-基准测试: benchmarks/Компилированные двоичные файлы (для C-библиотеки и упаковщика Windows-службы) были отправлены в git, чтобы сделать процесс сборки Java более централизованным и упрощённым.

Поиск подходящих задач

Наши поддерживаемые члены команды используют категории для маркировки задач, поэтому вы можете использовать это для поиска определённого типа задач, над которыми хотите работать. Если вы не знаете, с чего начать, попробуйте найти задачи, помеченные как good first issue или help wanted. Если вам хочется понять, как наши поддерживаемые члены команды сотрудничают друг с другом, вы можете обратиться к этой секции.

Настройка окружения

Требования

  • Операционная система — x86-64: Windows, Linux, FreeBSD и OS X
  • Java 11 64-битная или более поздняя версия
  • Maven 3 (из вашего менеджера пакетов на Linux / OSX (Homebrew) или из jar-файла для любой операционной системы)
  • C-компилятор, CMake — для внесения вклада в библиотеки C — ОПЦИОНАЛЬНО

Локальное окружение

Настройка Java и JAVA_HOMEПеременная среды JAVA_HOME требуется Maven. Возможно иметь несколько версий Java на одной платформе. Убедитесь, что JAVA_HOME указывает на Java 11 или более позднюю версию. Другие версии Java могут не работать. Если вы новичок в Java, проверьте, чтобы JAVA_HOME указывал на корневую директорию Java:

C:\Users\me\dev\jdk-11.0.8 и не C:\Users\me\dev\jdk-11.0.8\bin\java.Linux/OS X

export JAVA_HOME="/path/to/java/"

Windows

set JAVA_HOME="c:\path\to\java directory"

Компиляция Java и фронтенд-кода

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

mvn clean package -DskipTests -P build-web-console

Затем запустите QuestDB с помощью:

java -p core/target/questdb-<version>-SNAPSHOT.jar -m io.questdb/io.questdb.ServerMain -d <root_dir>

Веб-консоль будет доступна по адресу localhost:9000.

Форматирование кода

Код форматируется с использованием конфигурационных файлов в директории .idea. Чтобы минимизировать конфликты при слиянии и проблемы в CI, все вносимый код следует форматировать перед отправкой PR.

В IntelliJ IDEA можно:

  • автоматизировать форматирование (предпочтительно):

    • открыть File | Settings
    • выбрать Tools | Actions on Save
    • выбрать Reformat & Rearrange Code
    • нажать Apply

    или

  • форматировать файлы вручную, выбрав их и выбрав Code | Reformat File.

Компиляция C-библиотек

C-библиотеки должны быть скомпилированы отдельно для каждой платформы. Cmake также требует установки JAVA_HOME. Следующие команды компилируют на Linux/OSX.

cd core
cmake -B build/release -DCMAKE_BUILD_TYPE=Release .
cmake --build build/release --config Release

Для получения более подробной информации см. инструкции по сборке CMake.

Для разработки на C/C++ мы используем CLion. Этот IDE понимает файлы CMake и делает компиляцию проще. Сборка будет копировать артефакты следующим образом:``` core/src/main/c -> core/src/main/resources/io/questdb/bin


## Локальная настройка для разработки фронтенда

Код фронтенда (то есть веб-консоли) расположен в отдельном [репозитории](https://github.com/questdb/ui/tree/main/packages/web-console). Для его установки следует следовать инструкциям, предоставленным в этом репозитории.

Окружение для разработки фронтенда может работать самостоятельно, но потребует запущенного экземпляра QuestDB в фоновом режиме. Это можно сделать несколькими способами:

1. Запустите версию для разработки QuestDB из этого репозитория. Обратитесь к разделу [настройки окружения](#environment-setup) данного документа.
2. Запустите опубликованную версию QuestDB, например, с помощью Docker. Подробнее см. раздел [README этого репозитория](./README.md).

# Перед отправкой

## Тестирование

У нас много тестов, большинство из которых являются "интеграционными", то есть тест начинает сервер, взаимодействует с ним и проверяет результат. Мы ожидаем, что все участники будут отправлять PR с тестами. Обращайтесь к нам через Slack, если вы не уверены, как проводить тестирование, или считаете, что существующий тест можно улучшить.

## Внешние зависимостиQuestDB не зависит от Java. Это может звучать нетрадиционно, но на самом деле мы стараемся не изобретать велосипед, а вместо использования библиотек реализуем алгоритмы на основе первых принципов, чтобы обеспечить идеальное соответствие существующему коду. Со всем этим в виду мы ожидаем вклады, которые не добавляют сторонние зависимости.## Распределения памяти, оператор "new" и сборка мусора

QuestDB является нулевой сборкой мусора по всей цепочке данных. Мы ожидаем, что вклады также не распределяют память, если это возможно. Тем не менее, мы готовы помочь вам создать нулевую сборку мусора код, не стесняйтесь обращаться!

## Коммиты

Мы используем [стандартизованные коммиты](https://www.conventionalcommits.org/en/v1.0.0/) для автоматического генерирования заметок выпуска. Мы требуем, чтобы все комментарии к коммитам соответствовали этому стандарту. Для этого коммиты должны быть достаточно детализированы, чтобы их можно было успешно описать данным методом.

## Часто задаваемые вопросы

### Почему сервер работает, но UI возвращает ошибку `404` на [localhost:9000](http://localhost:9000)?

Это значит, что артефакты веб-консоли отсутствуют в `core/src/main/resources/io/questdb/site/public.zip`. Чтобы исправить эту проблему, просто выполните команду:

```bash
mvn clean package -DskipTests -P build-web-console

Почему некоторые тесты проваливаются на Windows?

Некоторые антивирусные программы могут вызывать провал тестов. Характерными признаками того, что антивирус мешает тестам являются следующие случаи:

  • тесты проходят в CI (пример конфигурации CI),

  • но проваливаются в следующих случаях:

  • проверка размера HTTP-чанков (отсутствие начальных нулей в тестах, таких как IODispatcherTest),

  • превышение времени выполнения теста,

  • аварийное завершение JVM.В случае продуктов ESET следующие шаги могут решить проблему:

  • отключите "фильтрацию содержимого протокола приложения" явно или

  • добавьте 127.0.0.1 в список "Исключённых IP адресов" в меню расширенных настроек, так как отключение всех верхних уровней механизмов не выключает фильтрацию протоколов.

Для поддержки проекта

У нас есть инженерная доска проекта, которая помогает нам организовать ожидающие GitHub задачи среди инженеров из разных часовых поясов. И также настроены представления для баг-репортов и запросов на новые возможности.

Это то, что вы можете сделать для организации открытых задач:

  • Добавляйте новые задачи на доску проекта
  • Всегда назначайте себе задачу, когда берете её в работу
  • Корректно маркируйте задачи после оценки
  • Закрывайте задачу, если больше никаких действий не требуется

Стадии нашей доски проекта:| Стадия | Описание | | --------------- | ---------------------------------------------------------------------------------------------- | Новый | Когда пользователи сообщают о баге, мы ждём, пока кто-то воспроизведёт или последует за этим | | Больше информации нужно | Когда требуется больше взаимодействия с автором до начала триажа | | К выполнению | Как только задачи подтверждаются и инженеры могут взяться за их выполнение. Порядок элементов должен указывать на приоритет | | В процессе | Если инженер берёт задачу, самоназначайтесь и переместите задачу в стадию В процессе | | Выполнено | Как только связанный pull request объединён, задача закрывается и автоматически перемещается в Выполнено |Мы также используем метки для организации задач на GitHub, чтобы иметь лучший обзор. Текущие метки можно примерно разделить следующим образом:

Категории Метки
Тип Ошибка, Новые возможности, Улучшение, Тестирование, Уборка, Вопрос, Производительность, Java
Компонент ILP, Rest API, Wire Postgres, SQL, Основной модуль, Интерфейс пользователя
Приоритет Срочно, Мелкий, Не исправлять, Позже
Сложность Хорошая первая задача

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

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

1
https://api.gitlife.ru/oschina-mirror/mirrors_trending-questdb.git
git@api.gitlife.ru:oschina-mirror/mirrors_trending-questdb.git
oschina-mirror
mirrors_trending-questdb
mirrors_trending-questdb
master