diff --git a/.github/workflows/directory_writer.yml b/.github/workflows/directory_writer.yml deleted file mode 100644 index 86389a2f..00000000 --- a/.github/workflows/directory_writer.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: "SENATOROV" -permissions: - contents: write -on: [push] -jobs: - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Set script executable permission - run: chmod +x scripts/build_directory_md.py - - name: Write DIRECTORY.md and README.md - run: | - scripts/build_directory_md.py 2>&1 | tee DIRECTORY.md - scripts/build_directory_md.py 2>&1 | tee README.md - git config --global user.name "$GITHUB_ACTOR" - git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" - git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY - - name: Commit and push changes - run: | - git add DIRECTORY.md README.md - git commit -m "SENATOROV updating DIRECTORY.md and README.md" || echo "No changes to commit" - git push --force origin ${{ github.ref_name }} diff --git a/.gitignore b/.gitignore index f55873c3..88e57d63 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ __pycache__/ # Distribution / packaging .Python +SENATOROV/ build/ develop-eggs/ dist/ @@ -247,87 +248,3 @@ coverage/ *.zip *.rar *.gif - -# Common binary file extensions - -# Images -*.png -*.jpg -*.jpeg -*.gif -*.bmp -*.tiff -*.ico -# Additional image formats -*.heic # High Efficiency Image File Format, commonly used by Apple - -# Audio -*.mp3 -*.wav -*.flac -*.aac -*.ogg -*.wma - -# Video -*.mp4 -*.avi -*.mkv -*.mov -*.wmv -*.flv -*.webm - -# Archives -*.zip -*.tar -*.gz -*.bz2 -*.rar -*.7z - -# Executables -*.exe -*.dll -*.so -*.bin -*.dylib - -# Compiled code -*.o -*.obj -*.class -*.jar -*.pyc -*.pyo -*.swf - -# Disk images -*.iso -*.img -*.vmdk - -# Fonts -*.ttf -*.otf -*.woff -*.woff2 - -# Documents -*.doc -*.docx -*.xls -*.xlsx -*.ppt -*.pptx -*.odt # OpenDocument Text -*.ods # OpenDocument Spreadsheet -*.odp # OpenDocument Presentation -*.rtf # Rich Text Format - -# Adobe Files -*.psd # Adobe Photoshop -*.ai # Adobe Illustrator -*.indd # Adobe InDesign -*.xd # Adobe XD - diff --git a/Algorithms/dir b/Algorithms/dir new file mode 100644 index 00000000..e69de29b diff --git a/Algorithms/files/dir b/Algorithms/files/dir new file mode 100644 index 00000000..e69de29b diff --git a/Math/dir b/Math/dir new file mode 100644 index 00000000..e69de29b diff --git a/Math/probability/theme_data.pdf b/Math/probability/theme_data.pdf new file mode 100644 index 00000000..1f13e774 Binary files /dev/null and b/Math/probability/theme_data.pdf differ diff --git a/Math/school_math/dir b/Math/school_math/dir new file mode 100644 index 00000000..e69de29b diff --git a/Python/dir b/Python/dir new file mode 100644 index 00000000..e69de29b diff --git a/Python/issues.ipynb b/Python/issues.ipynb new file mode 100644 index 00000000..2fe3700b --- /dev/null +++ b/Python/issues.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [ + "\"\"\"Part about issues.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Общие вопросы\n", + "\n", + "Что такое Issues на GitHub и для чего они используются?\n", + "- **Issues** — это инструмент для отслеживания багов, задач и идей. Они помогают упорядочить процесс разработки и улучшения проекта.\n", + "\n", + "Чем Issues отличаются от других инструментов управления задачами?\n", + "- Прямая связь с кодом, коммитами и репозиторием. Возможность комментировать, создавать подзадачи (sub-issues) и автоматизировать закрытие.\n", + "\n", + "Какие основные компоненты (поля) есть у каждого Issue?\n", + "- **Title**, **Description**, **Comments**, **Labels**.\n", + "\n", + "---\n", + "\n", + "### Создание Issues\n", + "\n", + "Как создать новое Issue в репозитории?\n", + "1. Перейдите в нужный репозиторий.\n", + "2. Откройте вкладку **Issues**.\n", + "3. Нажмите кнопку **\"New Issue\"**.\n", + "4. Заполните все необходимые поля.\n", + "5. Нажмите кнопку **Submit new issue**.\n", + "\n", + "Какие данные рекомендуется указывать в описании Issue для лучшего понимания задачи?\n", + "- **Title** с подробным описанием проблемы.\n", + "- **Description** с более подробным описанием проблемы.\n", + "- Возможно приложить скриншоты, код или ссылки.\n", + "\n", + "Какие теги (labels) можно добавить к Issue? Какие из них стандартные?\n", + "- Стандартные метки: `bug`, `enhancement`, `documentation`, `question`.\n", + "\n", + "Как прикрепить Assignees (ответственных) к Issue?\n", + "- В правой части страницы найдите блок **Assignees** и выберите нужного пользователя.\n", + "\n", + "---\n", + "\n", + "### Работа с Issues.\n", + "\n", + "Как использовать Labels для классификации задач?\n", + "- Для каждого типа задач используйте соответствующую метку (например, `bug` для ошибок, `enhancement` для улучшений).\n", + "\n", + "Для чего нужен Milestone, и как связать его с Issue?\n", + "- **Milestone** указывает срок выполнения задачи. Чтобы связать Issue с Milestone, выберите его в соответствующем блоке справа.\n", + "\n", + "Как привязать Issue к пул-реквесту (Pull Request)?\n", + "- В описании Pull Request используйте ключевые слова, например: `Closes #номер_задачи`, `Fixes #номер_задачи`.\n", + "\n", + "Как добавить комментарий к существующему Issue?\n", + "- Выберите нужный Issue и нажмите внизу страницы **Leave a comment**.\n", + "\n", + "---\n", + "\n", + "### Закрытие и завершение Issues\n", + "\n", + "Как закрыть Issue вручную?\n", + "- Зайдите в Issues и нажмите кнопку **Close Issue**. Можно добавить комментарий.\n", + "\n", + "Можно ли автоматически закрыть Issue с помощью сообщения в коммите или пул-реквесте? Как это сделать?\n", + "- Да, для этого в коммите или в комментарии к Pull Request используйте специальные слова: `Closes`, `Fixes`, `Resolves`.\n", + "\n", + "Как повторно открыть закрытое Issue, если работа ещё не завершена?\n", + "- Откройте нужный Issue, нажмите кнопку **Reopen issue** и добавьте комментарий при необходимости.\n", + "\n", + "---\n", + "\n", + "### Фильтрация и поиск\n", + "\n", + "Как найти все открытые или закрытые Issues в репозитории?\n", + "- Перейдите в вкладку **Issues**. По умолчанию выводятся все открытые. Чтобы вывести закрытые, нажмите на фильтр **Closed**.\n", + "\n", + "Как использовать фильтры для поиска Issues по меткам, исполнителям или другим критериям?\n", + "- Используйте фильтры в интерфейсе GitHub.\n", + "\n", + "Как сортировать Issues по приоритету, дате создания или другим параметрам?\n", + "- Используйте кнопку **Newest** для сортировки по дате создания.\n", + "\n", + "---\n", + "\n", + "### Интеграции и автоматизация\n", + "\n", + "Как настроить автоматические уведомления о новых или изменённых Issues?\n", + "- Зайдите в нужный репозиторий, нажмите на значок глаза (**Watch**), выберите **Custom** → **Issues**.\n", + "\n", + "Что такое Projects в контексте GitHub, и как связать их с Issues?\n", + "- **Projects** — это инструмент для управления задачами и Pull Request'ами, которые оформляются в виде карточек. К карточке можно привязать Issue.\n", + "\n", + "Какие сторонние инструменты можно использовать для автоматизации работы с Issues (например, боты, Webhooks)?\n", + "- Можно использовать встроенный **GitHub Actions** для автоматизации добавления меток, назначения исполнителей и других задач.\n", + "\n", + "---\n", + "\n", + "### Коллаборация\n", + "\n", + "Как упомянуть другого пользователя в комментарии к Issue?\n", + "- Упомяните его через `@username`.\n", + "\n", + "Как запросить дополнительные данные или уточнения у автора Issue?\n", + "- Через комментарии в самом Issue.\n", + "\n", + "Что делать, если Issue неактуально или его нужно объединить с другим?\n", + "- Сначала закройте неактуальный Issue, а затем добавьте комментарий в оба Issue, объясняя причину объединения.\n", + "\n", + "---\n", + "\n", + "### Практические аспекты\n", + "\n", + "Как использовать шаблоны для создания Issues?\n", + "- Поместите шаблон в папку `.github/ISSUE_TEMPLATE/`.\n", + "\n", + "Что такое Linked Issues, и как создать связь между задачами?\n", + "- **Linked Issues** — это функция для связывания Issues между собой. В комментарии к Issue упомяните связанное Issue с помощью `#`.\n", + "\n", + "Какие метрики (например, время выполнения) можно отслеживать с помощью Issues?\n", + "- Количество открытых/закрытых Issues, среднее время закрытия Issue, количество Issues по исполнителям.\n", + "\n", + "Какие best practices рекомендуются при работе с Issues в команде?\n", + "- Четко формулировать заголовки и описания, использовать метки, Milestones, Linked Issues." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/issues.py b/Python/issues.py new file mode 100644 index 00000000..7b28b2d3 --- /dev/null +++ b/Python/issues.py @@ -0,0 +1,118 @@ +"""Part about issues.""" + +# ### Общие вопросы +# +# Что такое Issues на GitHub и для чего они используются? +# - **Issues** — это инструмент для отслеживания багов, задач и идей. Они помогают упорядочить процесс разработки и улучшения проекта. +# +# Чем Issues отличаются от других инструментов управления задачами? +# - Прямая связь с кодом, коммитами и репозиторием. Возможность комментировать, создавать подзадачи (sub-issues) и автоматизировать закрытие. +# +# Какие основные компоненты (поля) есть у каждого Issue? +# - **Title**, **Description**, **Comments**, **Labels**. +# +# --- +# +# ### Создание Issues +# +# Как создать новое Issue в репозитории? +# 1. Перейдите в нужный репозиторий. +# 2. Откройте вкладку **Issues**. +# 3. Нажмите кнопку **"New Issue"**. +# 4. Заполните все необходимые поля. +# 5. Нажмите кнопку **Submit new issue**. +# +# Какие данные рекомендуется указывать в описании Issue для лучшего понимания задачи? +# - **Title** с подробным описанием проблемы. +# - **Description** с более подробным описанием проблемы. +# - Возможно приложить скриншоты, код или ссылки. +# +# Какие теги (labels) можно добавить к Issue? Какие из них стандартные? +# - Стандартные метки: `bug`, `enhancement`, `documentation`, `question`. +# +# Как прикрепить Assignees (ответственных) к Issue? +# - В правой части страницы найдите блок **Assignees** и выберите нужного пользователя. +# +# --- +# +# ### Работа с Issues. +# +# Как использовать Labels для классификации задач? +# - Для каждого типа задач используйте соответствующую метку (например, `bug` для ошибок, `enhancement` для улучшений). +# +# Для чего нужен Milestone, и как связать его с Issue? +# - **Milestone** указывает срок выполнения задачи. Чтобы связать Issue с Milestone, выберите его в соответствующем блоке справа. +# +# Как привязать Issue к пул-реквесту (Pull Request)? +# - В описании Pull Request используйте ключевые слова, например: `Closes #номер_задачи`, `Fixes #номер_задачи`. +# +# Как добавить комментарий к существующему Issue? +# - Выберите нужный Issue и нажмите внизу страницы **Leave a comment**. +# +# --- +# +# ### Закрытие и завершение Issues +# +# Как закрыть Issue вручную? +# - Зайдите в Issues и нажмите кнопку **Close Issue**. Можно добавить комментарий. +# +# Можно ли автоматически закрыть Issue с помощью сообщения в коммите или пул-реквесте? Как это сделать? +# - Да, для этого в коммите или в комментарии к Pull Request используйте специальные слова: `Closes`, `Fixes`, `Resolves`. +# +# Как повторно открыть закрытое Issue, если работа ещё не завершена? +# - Откройте нужный Issue, нажмите кнопку **Reopen issue** и добавьте комментарий при необходимости. +# +# --- +# +# ### Фильтрация и поиск +# +# Как найти все открытые или закрытые Issues в репозитории? +# - Перейдите в вкладку **Issues**. По умолчанию выводятся все открытые. Чтобы вывести закрытые, нажмите на фильтр **Closed**. +# +# Как использовать фильтры для поиска Issues по меткам, исполнителям или другим критериям? +# - Используйте фильтры в интерфейсе GitHub. +# +# Как сортировать Issues по приоритету, дате создания или другим параметрам? +# - Используйте кнопку **Newest** для сортировки по дате создания. +# +# --- +# +# ### Интеграции и автоматизация +# +# Как настроить автоматические уведомления о новых или изменённых Issues? +# - Зайдите в нужный репозиторий, нажмите на значок глаза (**Watch**), выберите **Custom** → **Issues**. +# +# Что такое Projects в контексте GitHub, и как связать их с Issues? +# - **Projects** — это инструмент для управления задачами и Pull Request'ами, которые оформляются в виде карточек. К карточке можно привязать Issue. +# +# Какие сторонние инструменты можно использовать для автоматизации работы с Issues (например, боты, Webhooks)? +# - Можно использовать встроенный **GitHub Actions** для автоматизации добавления меток, назначения исполнителей и других задач. +# +# --- +# +# ### Коллаборация +# +# Как упомянуть другого пользователя в комментарии к Issue? +# - Упомяните его через `@username`. +# +# Как запросить дополнительные данные или уточнения у автора Issue? +# - Через комментарии в самом Issue. +# +# Что делать, если Issue неактуально или его нужно объединить с другим? +# - Сначала закройте неактуальный Issue, а затем добавьте комментарий в оба Issue, объясняя причину объединения. +# +# --- +# +# ### Практические аспекты +# +# Как использовать шаблоны для создания Issues? +# - Поместите шаблон в папку `.github/ISSUE_TEMPLATE/`. +# +# Что такое Linked Issues, и как создать связь между задачами? +# - **Linked Issues** — это функция для связывания Issues между собой. В комментарии к Issue упомяните связанное Issue с помощью `#`. +# +# Какие метрики (например, время выполнения) можно отслеживать с помощью Issues? +# - Количество открытых/закрытых Issues, среднее время закрытия Issue, количество Issues по исполнителям. +# +# Какие best practices рекомендуются при работе с Issues в команде? +# - Четко формулировать заголовки и описания, использовать метки, Milestones, Linked Issues. diff --git a/Python/venv.ipynb b/Python/venv.ipynb new file mode 100644 index 00000000..3ca61d29 --- /dev/null +++ b/Python/venv.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Part about venv.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Команды для работы с виртуальными окружениями в Python\n", + "\n", + "### 1. Команда `python -m venv venv`\n", + "Создает в папке проекта папку с виртуальным окружением.\n", + "\n", + "#### 1.1 Команды для работы с `pip`\n", + "- `pip list` — выводит список и версии всех пакетов Python, которые установлены в текущей среде.\n", + "- `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`.\n", + "- `pip install -r requirements.txt` — устанавливает все пакеты из файла `requirements.txt`.\n", + "\n", + "### 2. Команды для работы с `conda`\n", + "- `conda env list` — выводит список всех сред Conda, созданных на компьютере.\n", + "- `conda create -n env_name python=3.5` — создает новую среду Conda с именем `env_name` и устанавливает в ней Python версии 3.5.\n", + "- `conda env update -n env_name -f file.yml` — обновляет среду Conda с именем `env_name` на основе файла `file.yml`. Файл `file.yml` должен содержать описание среды, включая пакеты и их версии. Флаг `-n` указывает имя среды, а `-f` — файл, содержащий описание среды.\n", + "- `source activate env_name` — активирует среду Conda с именем `env_name`. В Windows используется команда `conda activate env_name`.\n", + "- `source deactivate` — деактивирует текущую среду Conda и возвращает вас к базовой среде. В Windows используется команда `conda deactivate`.\n", + "- `conda clean -a` — удаляет все пакеты, которые больше не используются в любой среде Conda, а также очищает кэш пакетов. Флаг `-a` означает \"all\" и указывает на то, что необходимо удалить все неиспользуемые пакеты и очистить весь кэш.\n", + "\n", + "### 3. Активация окружений\n", + "Вставьте скрин вашего терминала, где вы активировали сначала `venv`, потом `conda`, назовите окружение \"SENATOROV\".\n", + "\n", + "![image.png](attachment:image.png)\n", + "![image-2.png](attachment:image-2.png)\n", + "\n", + "### 4. Установка пакетов в виртуальное окружение\n", + "- **conda**:\n", + " - conda create -n SENATOROV python=3.13\n", + " - conda activate SENATOROV\n", + "- **venv**:\n", + " - python -m venv SENATOROV\n", + " - SENATOROV\\Scripts\\activate\n", + " - pip install -r requirements.txt\n", + "\n", + "### 5. Экспорт зависимостей\n", + "- `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`.\n", + "- `conda env export > environment.yml` — экспортирует текущую среду Conda в файл `environment.yml`. Этот файл содержит полное описание среды, включая все установленные пакеты и их версии.\n", + "\n", + "#### 5.1 Пример выполнения команды\n", + "![image-3.png](attachment:image-3.png)\n", + "\n", + "### 6. Установка зависимостей из файлов\n", + "- `pip install -r requirements.txt` — устанавливает все зависимости (библиотеки и пакеты), перечисленные в файле `requirements.txt`.\n", + "- `conda env create -f environment.yml` — создает виртуальное окружение с помощью Conda на основе файла `environment.yml`.\n", + "\n", + "### 7. Информация о пакетах\n", + "- `pip list` — выводит список всех пакетов, установленных в текущем Python-окружении, вместе с их версиями.\n", + "- `pip show` — выводит подробную информацию о конкретном установленном пакете.\n", + "- `conda list` — выводит список всех пакетов, установленных в текущем Conda-окружении.\n", + "\n", + "### 8. Сравнение `venv/pip` и `conda`\n", + "- **Количество пакетов**: Пакетов больше в `venv`. Однако в Conda есть свой репозиторий с пакетами для многих языков программирования, что делает ее более привлекательной для data scientists при разработке сложных проектов. Кроме того, Conda сама управляет зависимостями.\n", + "\n", + "### 9. Пример выполнения команды\n", + "![image-4.png](attachment:image-4.png)\n", + "\n", + "### 11. Зачем нужно виртуальное окружение?\n", + "- Изолирует зависимости.\n", + "- Обеспечивает легкость переноса проекта.\n", + "- Управляет версиями Python.\n", + "\n", + "### 12. Ответ\n", + "ДА" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/venv.py b/Python/venv.py new file mode 100644 index 00000000..cf4d18fe --- /dev/null +++ b/Python/venv.py @@ -0,0 +1,64 @@ +"""Part about venv.""" + +# ### Команды для работы с виртуальными окружениями в Python +# +# ### 1. Команда `python -m venv venv` +# Создает в папке проекта папку с виртуальным окружением. +# +# #### 1.1 Команды для работы с `pip` +# - `pip list` — выводит список и версии всех пакетов Python, которые установлены в текущей среде. +# - `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`. +# - `pip install -r requirements.txt` — устанавливает все пакеты из файла `requirements.txt`. +# +# ### 2. Команды для работы с `conda` +# - `conda env list` — выводит список всех сред Conda, созданных на компьютере. +# - `conda create -n env_name python=3.5` — создает новую среду Conda с именем `env_name` и устанавливает в ней Python версии 3.5. +# - `conda env update -n env_name -f file.yml` — обновляет среду Conda с именем `env_name` на основе файла `file.yml`. Файл `file.yml` должен содержать описание среды, включая пакеты и их версии. Флаг `-n` указывает имя среды, а `-f` — файл, содержащий описание среды. +# - `source activate env_name` — активирует среду Conda с именем `env_name`. В Windows используется команда `conda activate env_name`. +# - `source deactivate` — деактивирует текущую среду Conda и возвращает вас к базовой среде. В Windows используется команда `conda deactivate`. +# - `conda clean -a` — удаляет все пакеты, которые больше не используются в любой среде Conda, а также очищает кэш пакетов. Флаг `-a` означает "all" и указывает на то, что необходимо удалить все неиспользуемые пакеты и очистить весь кэш. +# +# ### 3. Активация окружений +# Вставьте скрин вашего терминала, где вы активировали сначала `venv`, потом `conda`, назовите окружение "SENATOROV". +# +# ![image.png](attachment:image.png) +# ![image-2.png](attachment:image-2.png) +# +# ### 4. Установка пакетов в виртуальное окружение +# - **conda**: +# - conda create -n SENATOROV python=3.13 +# - conda activate SENATOROV +# - **venv**: +# - python -m venv SENATOROV +# - SENATOROV\Scripts\activate +# - pip install -r requirements.txt +# +# ### 5. Экспорт зависимостей +# - `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`. +# - `conda env export > environment.yml` — экспортирует текущую среду Conda в файл `environment.yml`. Этот файл содержит полное описание среды, включая все установленные пакеты и их версии. +# +# #### 5.1 Пример выполнения команды +# ![image-3.png](attachment:image-3.png) +# +# ### 6. Установка зависимостей из файлов +# - `pip install -r requirements.txt` — устанавливает все зависимости (библиотеки и пакеты), перечисленные в файле `requirements.txt`. +# - `conda env create -f environment.yml` — создает виртуальное окружение с помощью Conda на основе файла `environment.yml`. +# +# ### 7. Информация о пакетах +# - `pip list` — выводит список всех пакетов, установленных в текущем Python-окружении, вместе с их версиями. +# - `pip show` — выводит подробную информацию о конкретном установленном пакете. +# - `conda list` — выводит список всех пакетов, установленных в текущем Conda-окружении. +# +# ### 8. Сравнение `venv/pip` и `conda` +# - **Количество пакетов**: Пакетов больше в `venv`. Однако в Conda есть свой репозиторий с пакетами для многих языков программирования, что делает ее более привлекательной для data scientists при разработке сложных проектов. Кроме того, Conda сама управляет зависимостями. +# +# ### 9. Пример выполнения команды +# ![image-4.png](attachment:image-4.png) +# +# ### 11. Зачем нужно виртуальное окружение? +# - Изолирует зависимости. +# - Обеспечивает легкость переноса проекта. +# - Управляет версиями Python. +# +# ### 12. Ответ +# ДА diff --git a/code_review/dir b/code_review/dir new file mode 100644 index 00000000..e69de29b diff --git a/docs/git/git_command.py b/docs/git/git_command.py new file mode 100644 index 00000000..ec244539 --- /dev/null +++ b/docs/git/git_command.py @@ -0,0 +1,60 @@ +"""Конспект базовых команд Git и их описание. + +Этот ноутбук содержит основные команды Git, сгруппированные по категориям: +- Базовые команды +- Просмотр изменений +- Работа с журналом +- Отмена изменений +- Работа с файлами +- Работа с GitHub +- Дополнительные команды. +""" + +# +# +# +# +# # Основные команды Git +# +# ## Базовые команды +# - `git init` - создать новый репозиторий +# - `git clone` - копировать существующий репозиторий +# - `git add <файл>` - добавить файл для отслеживания +# - `git add .` - добавить все файлы +# - `git commit -m "сообщение"` - сохранить изменения +# - `git commit -am "сообщение"` - добавить и сохранить изменения +# - `git status` - проверить статус файлов +# - `git --version` - проверить версию Git +# +# ## Просмотр изменений +# - `git diff` - показать несохраненные изменения +# - `git diff file.py` - изменения в конкретном файле +# - `git difftool` - открыть изменения в графическом интерфейсе +# +# ## Работа с журналом +# - `git log` - просмотр полного журнала +# - `git log --oneline` - сокращенный формат +# - `git log -n 3` - последние 3 коммита +# - `git show хеш:файл.txt` - содержимое файла в коммите +# +# ## Отмена изменений +# - `git restore file.txt` - отменить несохраненные изменения +# - `git restore --staged file.txt` - убрать из индекса +# - `git checkout .` - отменить все изменения +# - `git revert -n HEAD~3..HEAD` - отменить последние 3 коммита +# - `git checkout хеш -- файл.py` - вернуть к определенной версии +# +# ## Работа с файлами +# - `git rm file.txt` - удалить файл +# - `git mv старый.txt новый.txt` - переименовать/переместить файл +# +# ## Работа с GitHub +# - `git remote add origin URL` - привязать удаленный репозиторий +# - `git push -u origin master` - первая отправка на GitHub +# - `git push` - отправить изменения +# - `git clone URL` - клонировать репозиторий +# +# ## Дополнительные команды +# - `git help <команда>` - получить справку +# - `git <команда> --help` - альтернативный вызов справки +# - `git ls-files --other --ignored --exclude-standard` - показать игнорируемые файлы diff --git a/docs/git/intro_to_git.py b/docs/git/intro_to_git.py new file mode 100644 index 00000000..a2d8e660 --- /dev/null +++ b/docs/git/intro_to_git.py @@ -0,0 +1,806 @@ +"""Git и организация программных проектов.""" + +#

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

+#

Система контроля версий управляет файлами при внесении в них изменений.

+#

Git, Mercurial и Subversion — популярные приложения контроля версий, хотя система Git остается самой популярной.

+ +# ### Коммиты и репозитории +#

Git позволяет сохранить состояние файлов проекта при внесении в них изменений. Такие сохранения называются снимками (snapshots) или коммитами (commits).

+#

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

+#

Система контроля версий управляет исходным кодом проекта, который хранится в специальной папке — репозитории (repo). Как правило, для каждого проекта, над которым вы работаете, следует создать отдельный репозиторий Git. Предположим, вы работаете в основном самостоятельно над своей частью программы и вам не нужны расширенные возможности Git (такие как ветвление и слияние), упрощающие работу с остальными участниками. Но даже если вы работаете в одиночку, самый маленький проект все равно выиграет от применения системы контроля версий.

+ +# ### Создание новых проектов Python с использованием Cookiecutter +#

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

+# +#

Прежде чем создавать репозиторий Git, следует создать файлы для проекта Python.

+# +#

Для проектов Python действуют определенные соглашения по поводу имен папок и иерархий. Более простая программа может содержать один файл .py. Но когда проекты усложнятся, в них будут включаться дополнительные файлы .py, файлы данных, документация, модульные тесты и т. д. Как правило, корневая папка проекта содержит папку src для файлов с исходным кодом .py, папку tests для модульных тестов и папку docs для документации (например, сгенерированной системой документирования Sphinx). Другие файлы содержат информацию о проекте и конфигурации системы: README.md для общей информации, .coveragerc для конфигурации покрытия кода, LICENSE.txt для текста программной лицензии проекта и т. д.

+# +#

Чтобы ускорить выполнение рутинных операций, можно использовать модуль Python cookiecutter для автоматического создания этих файлов и папок. Полная документация по модулю и программе командной строки Cookiecutter доступна на https://cookiecutter.readthedocs.io/.

+# +#

Если вы не знаете, для чего нужны те или иные файлы, не огорчайтесь. Хотя полное описание назначения каждого файла выходит за рамки книги, на странице https://github.com/asweigart/cookiecutter-basicpythonproject присутствуют ссылки и нужная информация. Итак, базовые файлы созданы, и мы переходим к отслеживанию изменений в них в системе Git.

+ +# ![image.png](attachment:image.png) + +# ### Установка Git +# +#

Git уже установлена на моем компьютере.

+# +#

Чтобы узнать это, введите команду `git --version` в командной строке.

+# +#

У меня выводится: `git version 2.45.0.windows.1`

+ +# ## Работа с Git +# +# Работа с репозиторием Git состоит из нескольких этапов: +# +# 1. Создание репозитория: +# - Командой `git init` для нового проекта +# - Или `git clone` для копирования существующего +# +# 2. Добавление файлов для отслеживания: +# - Используется команда `git add <имя_файла>` +# - Можно добавить все файлы: `git add .` +# +# 3. Сохранение изменений: +# - Команда `git commit -am "<сообщение коммита>"` +# - В сообщении описывается содержание изменений +# + +# +# ### Справка по командам +# +# Для получения справки по любой команде используйте: +# +# Чтобы получить справку по командам в GitHub, можно использовать команду «git help». 24 Она предоставляет обзор доступных команд и способов их использования. +# +# Ещё несколько способов открыть страницу руководства по конкретной команде Git: +# +# git help <команда>. 45 Например, чтобы получить справку по команде commit, нужно выполнить: git help commit. +# git <команда> --help. Например, так можно открыть руководство по команде git config: git config --help. +# man git-<команда>. 45 Например, чтобы просмотреть страницу руководства по конкретной команде Git, нужно ввести: man git-config. +# +# Если нужна персональная помощь, можно попробовать поискать её на каналах #git и #github IRC сервера Libera Chat, который доступен по адресу libera.chat. + +# ## Как Git отслеживает статус файлов +# +# ### Основные состояния файлов +# +# 1. **Неотслеживаемые (Untracked)**: +# - Файлы, которые Git не видит +# - Для Git эти файлы не существуют +# - Нужно добавить через `git add` +# +# 2. **Отслеживаемые (Tracked)** файлы имеют три состояния: +# - **Сохраненные (Committed)**: идентичны последнему коммиту +# - **Измененные (Modified)**: отличаются от последнего коммита +# - **Индексированные (Staged)**: помечены для следующего коммита +# +# ### Переходы между состояниями +# +# 1. Неотслеживаемый → Индексированный: +# - Используется `git add <файл>` +# +# 2. Сохраненный → Измененный: +# - Происходит автоматически при изменении файла +# - Не требует команд Git +# +# 3. Измененный → Индексированный: +# - Используется `git add <файл>` +# +# 4. Индексированный → Сохраненный: +# - Используется `git commit` +# +# ### Проверка статуса +# Команда `git status` +# +# ### Важные заметки: +# - Команду `git status` рекомендуется использовать часто +# - Git подсказывает команды для изменения состояния файлов +# - Файл может находиться только в одном состоянии + +# +# + +# ## Для чего нужно индексирование? +# +# ### Сложности индексирования +# +# 1. **Особые случаи**: +# - Файл может быть одновременно в измененном и индексированном состоянии +# - Разные части файла могут иметь разные состояния +# - Технически индексируются не файлы, а описания изменений +# +# 2. **Проблемы для новичков**: +# - Вызывает недоумение +# - Создает путаницу +# - Усложняет понимание Git +# - Часто описывается неточно в документации +# +# ### Как упростить работу +# +# 1. **Использовать команду `git commit -am`**: +# - Объединяет индексирование и коммит +# - Файлы переходят сразу из измененного в чистое состояние +# - Упрощает процесс сохранения +# +# 2. **Рекомендации по работе**: +# - Сразу сохранять файлы после добавления +# - Немедленно коммитить после переименования +# - Не откладывать коммиты после удаления файлов +# +# 3. **Альтернативные решения**: +# - Использовать графические интерфейсы Git +# - Избегать сложных случаев +# - Придерживаться простых сценариев использования + +# ## Создание репозитория Git на компьютере +# +# ### Особенности Git как распределенной системы +# +# 1. **Локальное хранение**: +# - Все коммиты хранятся на компьютере +# - Метаданные в папке `.git` +# - Не требует подключения к интернету +# - Быстрая работа даже офлайн +# +# ### Создание нового репозитория + +# 1. **Создание папки и инициализация**: +# +# # Для Windows: +# md wizcoin +# +# # Для macOS/Linux: +# # mkdir wizcoin +# +# # Для всех систем: +# # cd wizcoin +# git init + +# 2. **Что происходит при инициализации (git init)**: +# - В папке создается скрытая подпапка `.git` +# - Эта папка превращается в Git-репозиторий +# - Все существующие файлы становятся неотслеживаемыми (untracked) +# - В `.git` хранятся все данные о версиях (не нужно редактировать вручную!) +# +# ### Типы репозиториев +# +# 1. **Локальный репозиторий**: +# - На вашем компьютере +# - Для личной работы +# +# 2. **Удаленный репозиторий**: +# - На другом компьютере +# - Для совместной работы +# +# ### Мониторинг статуса (watch) +# +# watch - это утилита, которая: Что делает: +# Автоматически повторяет команду +# Показывает результат каждые 2 секунды +# Обновляет экран автоматически +# Как "живой" мониторинг +# +# Зачем это нужно: +# Не надо постоянно вводить git status +# Видишь изменения сразу +# Удобно следить за репозиторием +# Как "радар" для Git +# +# +# 1. **Установка watch**: +# - Windows: скачать с https://inventwithpython.com/watch.exe +# - macOS: через MacPorts +# - Linux: предустановлен +# +# 2. **Использование**: +# watch "git status" # обновление каждые 2 секунды +# watch "git log --oneline" # мониторинг коммитов + +# + +# ### Добавление файлов для отслеживания +# +# 1. **Проверка статуса файлов**: +# - Команда `git status` показывает состояние файлов +# - Неотслеживаемые файлы помечены как "Untracked files" +# - Git не может сохранять неотслеживаемые файлы +# - Нужно сначала добавить их для отслеживания +# +# 2. **Процесс добавления файлов**: +# - Сначала `git add` (индексирование файлов) +# - Затем `git commit` (создание коммита) +# - После этого Git начинает отслеживать файлы +# +# 3. **Способы использования git add**: +# - `git add file.txt` - добавить один файл +# - `git add *.py` - добавить все Python файлы +# - `git add .` - добавить все файлы в текущей папке +# +# 4. **Создание коммита**: +# - `git commit -m "Сообщение коммита"` - сохраняет индексированные файлы +# - В сообщении описываем, какие изменения внесли +# - После коммита файлы становятся отслеживаемыми +# +# 5. **Важные замечания**: +# - Файлы из `.gitignore` автоматически пропускаются +# - Можно добавлять файлы группами +# - Каждый коммит требует сообщения +# - После успешного коммита рабочая директория "чистая" + +# + +# ### Игнорирование файлов в Git (.gitignore) +# +# 1. **Зачем игнорировать файлы**: +# - Временные файлы проекта +# - Компилированные файлы (`.pyc`, `.pyo`, `.pyd`) +# - Папки инструментов разработки (`.tox`, `htmlcov`) +# - Сгенерированные файлы (можно создать заново) +# - Файлы с конфиденциальными данными (пароли, токены) +# +# 2. **Как использовать .gitignore**: +# - Создать файл `.gitignore` в корне проекта +# - Записать в него шаблоны игнорируемых файлов +# - Git автоматически пропустит эти файлы при `git add` и `git commit` +# - Файлы не будут показываться в `git status` +# +# 3. **Синтаксис .gitignore**: +# ``` +# # Комментарий +# __pycache__/ # Игнорировать папку +# *.py[cod] # Игнорировать файлы по маске +# *$py.class # Конкретный шаблон +# ``` +# +# 4. **Важные моменты**: +# - Сам файл `.gitignore` нужно добавить в репозиторий +# - Используйте `*` для шаблонов файлов +# - Используйте `#` для комментариев +# - Проверить игнорируемые файлы: `git ls-files --other --ignored --exclude-standard` +# +# 5. **Документация**: https://git-scm.com/docs/gitignore + +# ### Сохранение изменений в Git +# +# 1. **Основные команды**: +# - `git commit -am "сообщение"` - сохранить все измененные файлы +# - `git commit -m "сообщение" file1.py file2.py` - сохранить конкретные файлы +# - `git commit --amend -m "новое_сообщение"` - исправить последний коммит +# +# 2. **Правила хороших сообщений**: +# - Подробно описывать изменения +# - Избегать общих фраз ("обновил код", "фикс") +# - Помогать себе в будущем понять изменения +# - Пример: "Fixed the currency conversion bug" +# +# 3. **Важные моменты**: +# - Нельзя сохранять пустые папки +# - Git автоматически включает папки с файлами +# - После коммита файлы готовы к новым изменениям +# - Vim открывается если забыть `-m "сообщение"` (выход: Esc + qa!) +# +# 4. **Хорошая практика**: +# - Делать частые коммиты +# - Писать понятные сообщения +# - Группировать связанные изменения +# - Изучать примеры больших проектов (например, Django) + +# + +# ### Просмотр изменений перед коммитом (git diff) +# +# 1. **Основное использование**: +# ```bash +# git diff # показать все несохраненные изменения +# git diff file.py # изменения в конкретном файле +# ``` +# +# 2. **Как читать вывод git diff**: +# - `-` красным: удаленные строки +# - `+` зеленым: добавленные строки +# - `@@ -13,7 +13,14 @@`: координаты изменений +# - Показывает контекст вокруг изменений +# +# 3. **Процесс работы**: +# 1. Внести изменения в файл +# 2. `git diff` - проверить изменения +# 3. Исправить ошибки если найдены +# 4. `git add` - добавить в индекс +# 5. `git commit` - сохранить изменения +# +# 4. **Преимущества использования**: +# - Можно поймать опечатки +# - Проверить все изменения +# - Убедиться в правильности кода +# - Не сохранять лишнее +# +# 5. **Пример рабочего процесса**: +# ```bash +# git diff # проверить изменения +# git add README.md # добавить файл +# git commit -m "Added example code to README.md" # сохранить +# ``` + +# ### Просмотр изменений через git difftool +# +# 1. **Установка инструментов сравнения**: +# - **Windows**: WinMerge (https://winmerge.org) +# - **Linux**: +# ```bash +# sudo apt-get install meld +# # или +# sudo apt-get install kompare +# ``` +# - **macOS**: +# ```bash +# # Установка Homebrew +# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" +# # Установка tkdiff +# brew install tkdiff +# ``` +# +# 2. **Настройка Git**: +# ```bash +# # Выбор инструмента +# git config diff.tool winmerge # или meld, tkdiff, kompare +# +# # Отключение запроса подтверждения +# git config --global difftool.prompt false +# ``` +# +# 3. **Использование**: +# ```bash +# git difftool file.txt # открыть изменения в графическом интерфейсе +# ``` +# +# 4. **Преимущества**: +# - Удобный визуальный интерфейс +# - Легче сравнивать изменения +# - Больше возможностей для анализа +# - Интеграция с Git-клиентами + +# + +# ### Частота сохранения изменений в Git +# +# 1. **Когда делать коммиты**: +# - После завершения функционала +# - После исправления бага +# - После написания класса +# - Когда код работоспособен +# +# 2. **Чего избегать**: +# - Коммитов с синтаксическими ошибками +# - Неработающего кода +# - Слишком редких коммитов +# - Слишком частых коммитов +# +# 3. **Правила хорошего тона**: +# - Запускать тесты перед коммитом +# - Проверять работоспособность +# - Писать понятные сообщения +# - Группировать связанные изменения +# +# 4. **Баланс в размере коммитов**: +# - Может быть несколько строк +# - Может быть несколько сотен строк +# - Главное - логическая завершенность +# - Возможность отката к рабочей версии +# +# 5. **Важно помнить**: +# - Лучше коммитить чаще, чем реже +# - Каждый коммит должен быть осмысленным +# - Упоминать о непроходящих тестах +# - Сохранять возможность отката + +# ### Удаление файлов в Git +# +# 1. **Правильное удаление файлов**: +# ```bash +# git rm file.txt # удалить файл +# git commit -m "Удалил file.txt" # сохранить удаление +# ``` +# +# 2. **Чего НЕ делать**: +# - Не использовать `del` (Windows) +# - Не использовать `rm` (macOS/Linux) +# - Не удалять файлы вручную +# - Не забывать про коммит после удаления +# +# 3. **Если удалили файл вручную**: +# ```bash +# git restore file.txt # восстановить файл +# # или +# git rm file.txt # подтвердить удаление +# ``` +# +# 4. **Важные моменты**: +# - Файл остается в истории Git +# - Можно восстановить позже +# - Нужно коммитить удаление +# - Работает только с "чистыми" файлами +# +# 5. **Процесс удаления**: +# 1. `git rm file.txt` +# 2. Git индексирует удаление +# 3. Нужен коммит для завершения +# 4. Файл удаляется из рабочей копии + +# ### Переименование и перемещение файлов в Git +# +# 1. **Правильное переименование**: +# ```bash +# git mv старый.txt новый.txt +# git commit -m "Переименовал файл" +# ``` +# +# 2. **Перемещение файлов**: +# ```bash +# mkdir новая_папка +# git mv файл.txt новая_папка/файл.txt +# git commit -m "Переместил файл" +# ``` +# +# 3. **Комбинированные операции**: +# ```bash +# git mv старый_путь/старый.txt новый_путь/новый.txt +# git commit -m "Переместил и переименовал" +# ``` +# +# 4. **Чего НЕ делать**: +# - Не переименовывать через проводник +# - Не перемещать файлы вручную +# - Не забывать про коммит +# - Не игнорировать git mv +# +# 5. **Важные моменты**: +# - История файла сохраняется +# - Git отслеживает перемещения +# - Нужен коммит после операций +# - Можно комбинировать действия + +# ### Просмотр журнала коммитов (git log) +# +# 1. **Основные команды**: +# ```bash +# git log # полный журнал +# git log --oneline # сокращенный формат +# git log -n 3 # последние 3 коммита +# git show хеш:файл.txt # содержимое файла в коммите +# ``` +# +# 2. **Структура коммита**: +# - Хеш (40 символов) +# - Автор +# - Дата +# - Сообщение коммита +# +# 3. **Удобные опции**: +# - `--oneline`: краткий формат +# - `-n число`: ограничение количества +# - `q`: выход из просмотра +# - `↑` и `↓`: навигация по журналу +# +# 4. **Хеши коммитов**: +# - 40 символов (полный хеш) +# - Первые 7 символов (короткий) +# - Уникальные идентификаторы +# - Используются для возврата к версиям +# +# 5. **Важно знать**: +# - Журнал может быть длинным +# - Хеши уникальны +# - Можно использовать GUI клиенты +# - История сохраняется полностью + +# ### Просмотр журнала коммитов (git log) +# +# 1. **Базовый просмотр**: +# ```bash +# git log # полный журнал со всеми деталями +# ``` +# Показывает: +# - Полный хеш коммита +# - Автора и email +# - Дату и время +# - Сообщение коммита +# +# 2. **Сокращенный просмотр**: +# ```bash +# git log --oneline # краткий формат +# git log --oneline -n 3 # только последние 3 коммита +# ``` +# +# 3. **Просмотр содержимого**: +# ```bash +# git show хеш:файл.txt # содержимое файла в конкретном коммите +# ``` +# +# 4. **Навигация в журнале**: +# - `↑` и `↓`: прокрутка +# - `q`: выход из просмотра +# - `Space`: следующая страница +# +# 5. **Хеши коммитов**: +# - Полный: 40 символов (962a8baa29e452c74d40075d92b00897b02668fb) +# - Короткий: 7 символов (962a8ba) +# - Используются для идентификации коммитов +# - Нужны для возврата к предыдущим версиям + +# ### Отмена несохраненных изменений +# +# 1. **Основные команды**: +# ```bash +# git restore file.txt # отменить изменения в одном файле +# git checkout . # отменить все изменения во всех файлах +# ``` +# +# 2. **Важные моменты**: +# - Работает только для несохраненных изменений +# - Нельзя отменить restore +# - Возвращает к последнему коммиту +# - Будьте осторожны - изменения пропадут! +# +# 3. **Процесс отмены**: +# 1. Проверить статус (`git status`) +# 2. Убедиться, что файлы не в индексе +# 3. Использовать `git restore` +# 4. Проверить результат +# +# 4. **Когда использовать**: +# - Случайные изменения +# - Неудачный эксперимент +# - Возврат к чистой версии +# - До индексации файлов +# +# 5. **⚠️ Предупреждения**: +# - Отмена необратима +# - Проверяйте статус перед отменой +# - Сохраняйте важные изменения +# - Используйте с осторожностью + +# ### Деиндексирование файлов (unstage) +# +# 1. **Основная команда**: +# ```bash +# git restore --staged file.txt # убрать файл из индекса +# ``` +# +# 2. **Что происходит**: +# - Файл остается измененным +# - Убирается из индекса +# - Не попадет в следующий коммит +# - Статус меняется на "modified" +# +# 3. **Когда использовать**: +# - После случайного `git add` +# - При изменении планов +# - Перед новым коммитом +# - Для перегруппировки изменений +# +# 4. **Процесс**: +# 1. Файл изменен +# 2. `git add` (в индексе) +# 3. `git restore --staged` (из индекса) +# 4. Файл все еще изменен +# +# 5. **Важно помнить**: +# - Изменения в файле сохраняются +# - Можно снова добавить в индекс +# - Не влияет на сам файл +# - Только убирает из очереди на коммит + +# ### Отмена последних коммитов (git revert) +# +# 1. **Основная команда**: +# ```bash +# git revert -n HEAD~3..HEAD # отменить последние 3 коммита +# git add . # добавить изменения +# git commit -m "Отмена изменений" # сохранить отмену +# ``` +# +# 2. **Как это работает**: +# - Создает новый коммит +# - Отменяет указанные изменения +# - Сохраняет историю +# - Можно отменить отмену +# +# 3. **Пример истории**: +# ```bash +# faec20e (HEAD) Starting over from the plot twist +# de24642 Changed the setting to outer space +# 2be4163 Added a whacky sidekick +# 97c655e Renamed the detective to 'Snuggles' +# 8aa5222 Added an exciting plot twist +# ``` +# +# 4. **Важные моменты**: +# - Коммиты не удаляются +# - История сохраняется +# - Можно вернуться к любой версии +# - Безопасная операция +# +# 5. **Процесс отмены**: +# 1. Выбрать количество коммитов +# 2. Выполнить `git revert` +# 3. Добавить изменения +# 4. Создать коммит отмены + +# ### Возврат к определенной версии файла +# +# 1. **Просмотр старой версии**: +# ```bash +# git show хеш:файл.py # посмотреть содержимое +# ``` +# +# 2. **Восстановление файла**: +# ```bash +# git checkout хеш -- файл.py # вернуть к версии +# git add файл.py # добавить в индекс +# git commit -m "Откат к версии хеш" # сохранить +# ``` +# +# 3. **Пример истории**: +# ```bash +# d41e595 Rolled back eggs.py to 009b7c0 +# 895d220 Adding email support to cheese() +# df617da Renaming bacon() to cheese() +# ef1e4bb Refactoring bacon() +# 009b7c0 Adding better documentation to spam() +# ``` +# +# 4. **Важные моменты**: +# - Откат только одного файла +# - Остальные файлы не меняются +# - Создается новый коммит +# - История сохраняется +# +# 5. **Процесс отката**: +# 1. Найти нужный коммит +# 2. Проверить содержимое (`git show`) +# 3. Восстановить файл (`git checkout`) +# 4. Создать коммит с откатом + +# + +# ### Работа с конфиденциальными данными в Git +# +# 1. **Предотвращение утечек**: +# ```bash +# # .gitignore +# secrets.txt +# confidential.py +# *.key +# *.password +# ``` +# +# 2. **Если данные уже попали в репозиторий**: +# - Использовать `git filter-branch` +# - Или BFG Repo-Cleaner (рекомендуется) +# - Ссылка: https://help.github.com/en/articles/removing-sensitive-data-from-a-repository +# +# 3. **Правильный подход**: +# - Хранить секреты отдельно +# - Добавлять файлы в `.gitignore` +# - Использовать переменные окружения +# - Читать данные из внешних файлов +# +# 4. **Что НЕ делать**: +# - Не коммитить пароли +# - Не хранить ключи API +# - Не включать токены +# - Не добавлять личные данные +# +# 5. **Безопасные практики**: +# - Создавать `secrets.txt.example` +# - Использовать конфиг-файлы +# - Документировать процесс +# - Регулярно проверять историю + +# ### GitHub и публикация репозитория +# +# 1. **Что такое GitHub**: +# - Веб-сервис для Git репозиториев +# - Бесплатный хостинг кода +# - Платформа для совместной работы +# - Резервное копирование +# +# 2. **Создание репозитория на GitHub**: +# ```bash +# 1. Зайти на github.com +# 2. Нажать New Repository +# 3. Указать имя (например, wizcoin) +# 4. Добавить описание +# 5. Выбрать Public/Private +# 6. Create repository +# ``` +# +# 3. **Структура ссылок**: +# ``` +# https://github.com/username/repository +# # Пример: +# https://github.com/asweigart/wizcoin +# ``` +# +# 4. **Важные моменты**: +# - Git ≠ GitHub +# - Git = система контроля версий +# - GitHub = веб-сервис для Git +# - Можно работать оффлайн +# +# 5. **Преимущества GitHub**: +# - Совместная работа +# - Резервное копирование +# - Доступ из любого места +# - Публичное портфолио + +# ### Работа с GitHub репозиторием +# +# 1. **Отправка локального репозитория**: +# ```bash +# # Привязка удаленного репозитория +# git remote add origin https://github.com/username/repo.git +# +# # Первая отправка +# git push -u origin master +# +# # Последующие отправки +# git push +# ``` +# +# 2. **Клонирование с GitHub**: +# ```bash +# git clone https://github.com/username/repo.git +# ``` +# +# 3. **Важные моменты**: +# - Отправлять изменения регулярно +# - Проверять статус синхронизации +# - Использовать HTTPS или SSH +# - Хранить учетные данные безопасно +# +# 4. **Процесс работы**: +# 1. Создать репозиторий на GitHub +# 2. Привязать локальный репо +# 3. Отправить изменения +# 4. Регулярно синхронизировать +# +# 5. **Аварийное восстановление**: +# - Сохранить рабочие файлы +# - Удалить проблемный локальный репо +# - Заново клонировать с GitHub +# - Вернуть изменения + +# Оновные моменты: +# Git - это система контроля версий, которая позволяет: +# Отслеживать изменения в коде +# Возвращаться к предыдущим версиям +# Работать над проектом в команде +# +# Основные состояния файлов в Git: +# Неотслеживаемые (untracked) +# Отслеживаемые (tracked): +# Сохраненные (committed) +# Измененные (modified) +# Индексированные (staged) +# + +# # Основные команды Git: +# git init # создать новый репозиторий +# git add # добавить файлы для отслеживания +# git commit # сохранить изменения +# git status # проверить статус файлов +# git log # просмотреть историю коммитов +# git push # отправить изменения на GitHub + +# Для организации Python проектов рекомендуется: +# Использовать cookiecutter для создания структуры проекта +# Создавать отдельный репозиторий для каждого проекта +# Регулярно коммитить изменения +# Использовать .gitignore для исключения ненужных файлов +# GitHub позволяет: +# Хранить копию репозитория онлайн +# Делиться кодом с другими разработчиками +# Создавать резервные копии diff --git a/docs/welcome/intro_eng.md b/docs/welcome/intro_eng.md deleted file mode 100644 index 44668739..00000000 --- a/docs/welcome/intro_eng.md +++ /dev/null @@ -1,89 +0,0 @@ -### Register Accounts - -1. **GitHub** - - Go to [GitHub](https://github.com/). - - Click on "Sign up" and follow the instructions to create an account. - - Once registered, share your GitHub profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/3602). - -2. **Kaggle** - - Visit [Kaggle](https://www.kaggle.com/). - - Click on "Sign up" and create an account. - - Confirm your phone number on Kaggle (RELEVANT FOR RUSSIA) [Video Guide](https://youtu.be/fcBOlOl__T0) - - Use this number for Kaggle: [365sms.ru](https://365sms.ru/) - - - Obtain Contributor Status on Kaggle: [Video Guide](https://youtube.com/shorts/A_EtBko0T3U?feature=shared) - - Share your Kaggle profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/832). - -3. **ODS.AI** - - Go to [ODS.AI](https://ods.ai/). - - Register for an account. - - Share your ODS.AI profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/832). - -### Download and Install Software - -1. **GitHub Desktop** - - Download from [GitHub Desktop](https://github.com/desktop/desktop). - - Follow the installation instructions for your operating system. - -2. **Cursor** - - Download from [Cursor](https://github.com/getcursor/cursor). - - Install it according to the provided instructions. - -3. **Python (CPython)** - - Download from [CPython](https://github.com/python/cpython). - - Follow the installation guide for your platform. - -4. **Git for Windows** - - Download from [Git for Windows](https://github.com/git-for-windows/git). - - Install it using the setup instructions. - -5. **Conda** - - Download from [Conda](https://github.com/conda/conda). - - Follow the installation instructions for your system. - -### Additional Resources - -- **Jamboard for Learning** - - Watch the video guide: [YouTube](https://youtu.be/8pwKgbMyfbo) - - Use [Canva](https://www.canva.com/) to create and share Jamboards. - - Send me the link to your Jamboard in a private message. - -### Download the Repository to Your Computer - -### Detailed Instructions - -1. **Star the Repository** - - Make sure you have starred the repository. https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV - ![image](https://github.com/user-attachments/assets/aa4e7946-d65f-4f5f-91a2-84a1dc3bdcb4) - -2. **Join the Team** - - If you are not listed in the [Senatorov Team](https://github.com/orgs/SENATOROVAI/teams/senatorov-team), send a message in the chat [here](https://t.me/c/1937296927/3602) with: - - Your Telegram username - - Your GitHub profile link - -3. **Create a New Branch** - - Go to the [branches page](https://github.com/SENATOROVAI/GithubLogin-Data-Science-For-Beginners-from-scratch-SENATOROV/branches) and create a new branch named after your [GitHub username](https://github.com/settings/admin). - - Example ![image](https://github.com/user-attachments/assets/09181e62-84f8-4992-86a4-13394c7a014a) - -4. **Clone the Repository** - - Download the repository to your local machine using any convenient method. I recommend GitHub Desktop. - Screenshot 2024-11-27 at 4 01 19 AM - -5. **Switch Branches** - - Ensure you switch to your newly created branch in GitHub Desktop. - ![image](https://github.com/user-attachments/assets/82f6acc8-3e4f-4abd-bc9b-0514a47056f4) - Screenshot 2024-11-27 at 4 26 31 AM - -### Submitting Changes - -1. **Update Branches** - - If requested in the GitHub chat, update your branch by creating a pull request from the `main` branch to your branch. Use the [compare page](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/compare) to select your branch and initiate the pull request. - ![image](https://github.com/user-attachments/assets/e027f42e-a66f-42db-a52a-3a6319903ee8) - -### Ongoing Learning - -- All further learning and contributions will be conducted within this repository. - -By following these structured steps, you can ensure a smooth contribution process and stay aligned with the repository's guidelines. - -If you have any questions or need further assistance, feel free to ask! diff --git a/docs/welcome/intro_ru.md b/docs/welcome/intro_ru.md deleted file mode 100644 index 9a2ce61e..00000000 --- a/docs/welcome/intro_ru.md +++ /dev/null @@ -1,344 +0,0 @@ -![photo_2024-01-16_20-54-32](https://github.com/user-attachments/assets/fe349ddc-47df-40f7-80b9-5758c15373c7) - ---- - -

Добро пожаловать в команду SENATOROVAI!

- --

Старые студенты сразу переходят к этому пункту, при условии что предыдущие выполнены

- -- Выполни инструкцию ниже, если возникнут трудности смело пиши: https://t.me/c/1937296927/2415 - ---- - -

Оглавление

- - ---- - -### Расскажи о себе, прошлый опыт, цель обучения, где живешь, лучше пиши на английском, коллеги англоязычные, русский их не родной, - - Сообщение отправь сюда [Тык](https://t.me/c/1937296927/3181) - ---- - -### Регистрация аккаунтов - -1. **GitHub** - - Перейдите на [GitHub](https://github.com/). - - Нажмите "Sign up" и следуйте инструкциям для создания аккаунта. - - После регистрации поделитесь ссылкой на ваш профиль GitHub в чате: [Telegram Chat](https://t.me/c/1937296927/3602), в посте добавьте @ВашЮзерНеймТелеграм хэштег #githubaccount - - Настройте Github: - - подписаться на коллег https://github.com/orgs/SENATOROVAI/teams/senatorov-team - - оформить гитхаб https://www.youtube.com/watch?v=pm17VwdJ6UI - - выберите шаблон https://github.com/abhisheknaiidu/awesome-github-profile-readme - - Повторите 5 пунктов - - Example - ---- - -2. **Kaggle** - - [Что такое КЭГГЛ?](https://youtu.be/wL9zQczbHRs) - - Посетите [Kaggle](https://www.kaggle.com/). - - Нажмите "Sign up" и создайте аккаунт. - - Подтвердите номер телефона на Kaggle (АКТУАЛЬНО ДЛЯ РФ) [Видео инструкция](https://youtu.be/fcBOlOl__T0) - - Используйте этот номер для Kaggle: [365sms.ru](https://365sms.ru/) - - - Получите статус контрибьютора на Kaggle: [Видео инструкция](https://youtube.com/shorts/A_EtBko0T3U?feature=shared) - - Подпишитесь на коллег https://t.me/c/1937296927/832/21039 - - Заполните профиль - - Example - - - Поделитесь ссылкой на ваш профиль Kaggle в чате: [Telegram Chat](https://t.me/c/1937296927/832). в посте добавьте @ВашЮзерНеймТелеграм хэштег #kaggleaccount - - [Загрузка ноутбуков на Kaggle](https://youtu.be/Kn9ZcXlCApw) - ---- - -4. **ODS.AI** - - Перейдите на [ODS.AI](https://ods.ai/). - - Зарегистрируйтесь для создания аккаунта. - - Поделитесь ссылкой на ваш профиль ODS.AI в чате: [Telegram Chat](https://t.me/c/1937296927/832). в посте добавьте @ВашЮзерНеймТелеграм хэштег #odsaccount - ---- - -### Скачивание и установка программ - -1. **GitHub Desktop** - - Скачайте с [GitHub Desktop](https://github.com/desktop/desktop). - - Следуйте инструкциям по установке для вашей операционной системы. - ---- - -2. **Cursor** - - Скачайте с [Cursor](https://github.com/getcursor/cursor). - - Установите согласно предоставленным инструкциям. - - Example - - (установить плагины): - - Example - - - - ms-python.pylint - - ms-python.flake8 - - ms-python.mypy-type-checker - - matangover.mypy - - ms-pyright.pyright - - ms-python.black-formatter - - njpwerner.autodocstring - - njqdev.vscode-python-typehint - - KevinRose.vsc-python-indent - - mintlify.document - - streetsidesoftware.code-spell-checker - - eamodio.gitlens - - ms-toolsai.jupyter - - ms-vsliveshare.vsliveshare - - njqdev.vscode-python-typehint - - EricSia.pythonsnippets3 - - ms-pyright.pyright - - congyiwu.vscode-jupytext - - streetsidesoftware.code-spell-checker-russian - - Активация русского языка - - Commands (use F1 or View -> Command Palette): - - Enable Russian Spell Checker Dictionary - Enable Russian Spell Checker Dictionary in Workspace - - Добавить слово в словарь => наводим на слово и нажимаем ctrl+. потом выбираем add to user settings - - Настройте [курсор(vscode на видео) к работе](https://www.youtube.com/watch?v=Si9MfV8uJ-0) - - Кнопка "vs code settings" ,для wrap и т.д. Example - - - **Посмотрите [возможности курсора](https://www.youtube.com/watch?v=hjBCRVYE1as&feature=youtu.be)** - - Посмотрите [процесс принятие и отправки домашних заданий на гитхаб](https://youtu.be/hW_7hodGxVU?si=tCEVs00xGt2q61eW) - ---- - -3. **Python (CPython)** - - Скачайте с [CPython](https://github.com/python/cpython). - - Следуйте руководству по установке для вашей платформы. - - Повторите видео [Интерпритатор Cpython и PYPY](https://youtu.be/ooLcXygrLnU) - ---- - -4. **Git for Windows** - - Скачайте с [Git for Windows](https://github.com/git-for-windows/git). - - Установите, следуя инструкциям по настройке. - ---- - -5. **Conda** - - Скачайте с [Conda](https://github.com/conda/conda). - - Следуйте инструкциям по установке для вашей системы. - ---- - -- **Джамборд для учёбы** - - Посмотрите видеоинструкцию: [YouTube](https://youtu.be/8pwKgbMyfbo) - - Используйте [Canva](https://www.canva.com/) для создания и обмена джамбордами. - - Скиньте мне в личку ссылку на ваш джамборд. - ---- - -### Скачайте репозиторий на свой компьютер. - -1. **Поставьте звезду репозиторию** - - Убедитесь, что вы поставили звезду репозиторию, https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV -![image](https://github.com/user-attachments/assets/aa4e7946-d65f-4f5f-91a2-84a1dc3bdcb4) - ---- - -2. **Присоединитесь к команде** - - Если вас нет в списке [команды Senatorov](https://github.com/orgs/SENATOROVAI/teams/senatorov-team), отправьте сообщение в чат [здесь](https://t.me/c/1937296927/3602) с: - - Вашим логином в Telegram - - Ссылкой на ваш профиль GitHub - - в посте добавьте хэштеги #githubaccount #senatorovteam - ---- - -1. **Создайте новую ветку** - - Перейдите на [страницу веток](https://github.com/SENATOROVAI/GithubLogin-Data-Science-For-Beginners-from-scratch-SENATOROV/branches) и создайте новую ветку, назвав её вашим [логином GitHub](https://github.com/settings/admin) без СОБАЧКИ @. - -![image](https://github.com/user-attachments/assets/99f05e36-f698-486a-8f95-50225043fb22) - -- Пример ![image](https://github.com/user-attachments/assets/09181e62-84f8-4992-86a4-13394c7a014a) -4. **Клонируйте репозиторий, лучше конкретную ветку** - - Скачайте репозиторий на ваш локальный компьютер любым удобным способом. Рекоммендую Github Desktop - Screenshot 2024-11-27 at 4 01 19 AM - - -4.1 **Клонирование конкретной ветки** - -- откройте терминал/командную строку, перейдите в ваш репозиторий с помощью команды ``cd documents/github/`` -- `` git clone --branch название-ветки https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV.git `` -- ``cursor .`` - -5. **Переключите ветки** - - (опционально) переключите ветку в GitHub Desktop, вы можете вообще удалить github desktop и [отправлять коммиты через курсор](https://youtu.be/Si9MfV8uJ-0?si=u-VwMWhK-BNtJVuf&t=382), как вам удобно. - Example - -5.1 **Откройте курсор в github desktop и переключите в нем ветки** - Example -Screenshot 2024-11-27 at 4 26 31 AM - -6. **Введите команды в терминал** - - Откройте терминал и убедитесь что там написано Data-Science-For-Beginners-from-scratch-SENATOROV - Example - - ![изображение](https://github.com/user-attachments/assets/6145231b-a5b4-488b-967a-5d4ed9b995a5) - - Затем вставьте 4 команды ниже, в терминал, по очереди, и нажмите каждый раз Enter - - ``git init `` - - ``pip install pre-commit`` - - ``pre-commit install`` - - ``pre-commit run --all-files`` - - - Документация по линтерам: - - Pylint https://pylint.pycqa.org - - Pydocstyle https://docs.astral.sh/ruff/rules/#pydocstyle-d - - Flake8 https://flake8.pycqa.org/en/latest/index.html - - Mypy https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html#variables - -7. **Пришлите скриншот вашего терминала** - - Сделайте полный скриншот вашего терминала на весь экран и пришлите в [чат](https://t.me/c/1937296927/3602) пример скриншота - - Example - -7.1 **Если у вас есть локальный репозиторий на компьютере с вашей домашней работой, скопируйте ТОЛЬКО файлы и папки с домашней работой из documents/github/ваш_репозиторий, в новый репозиторий documents/github/Data-Science-For-Beginners-from-scratch-SENATOROV** - -8. **Ознакомиться с системой штрафов** - - [Штрафы](https://t.me/c/1937296927/11810/11811) - -9. **Ознакомиться с системой бонусов** - - [Бонусы](https://t.me/c/1937296927/25305/25306) - -10. **Ознакомиться с системой помощи в комьюнити** - - [Инструкция помощь](https://t.me/c/1937296927/2415/23729) - - [Практика запроса помощи или сообщения о проблеме](https://youtu.be/wR3gXOiRm10) - -11. **Ознакомиться с отменой занятий** - - [Отмена занятий](https://t.me/c/1937296927/26659/27648) -12. **Ознакомиться с программой обучения** - - [Программа обучения](https://t.me/c/1937296927/10385/14516) -13. **Важные анонсы крайте нежелательно пропускать** - - [Критические уведомления](https://t.me/c/1937296927/26659) -14. **Чат HomeWork** - - если я ставлю собачку на вас в этом чате значит вам пришла домашняя работа [чат](https://t.me/c/1937296927/4496) - - после выполнения ДЗ и отправки коммита вы должны приложить в этот чат ссылку на него -15. **Персональное обращение** - - регулярно проверяйте что вас [не тегнули](https://t.me/c/1937296927/2415/25595) - - помогайте другим коллегам решать их тикеты и [получайте бонусы](https://t.me/c/1937296927/25305/25306), ищите хэштег #open - Example - -16. **Ответьте на квизы и пришлите пул реквест** - - [Квиз](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/issues/2) - - [pull requests](https://www.youtube.com/live/Fdhy4W4U4os) -17. **Внимательно прочитайте инструкцию по git** - - [git](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/blob/main/docs/git/intro_to_git.ipynb) -18. **Приступите к практике по git** - - [git задание](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/issues/11) - - [git course](https://learngitbranching.js.org/?locale=ru_RU) -19. **Практика Github** - - [КАК РЕШИТЬ любую ПРОБЛЕМУ связанную с OPENSOURCE](https://www.youtube.com/live/6U09wLPorYw) - - [Как искать информацию на Github и алгоритм решения неработающих плагинов VS CODE/Cursor](https://www.youtube.com/watch?v=-aCdtZ8qL24) - -### ПОЗДРАВЛЯЮ! ВЫ ГОТОВЫ К ОБУЧЕНИЮ, Сообщите в [чат](https://t.me/c/1937296927/4496) что сделали intro и я задам вам домашнюю работу. - ---- - -1. ### **update branch** - - Если в чате GitHub вас просят "обновите ветки/update branch", создайте пулреквест из ветки `main` в вашу ветку. Используйте [страницу сравнения](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/compare), чтобы выбрать вашу ветку и инициировать пулреквест. - ![изображение](https://github.com/user-attachments/assets/af405a89-cbe5-4bca-b58e-4a332536e001) - - В title пул реквеста пишите ``update branch`` - ![image](https://github.com/user-attachments/assets/cf31394e-288f-4a53-9730-371585f08fe8) - - Скролим в самый низ и нажимаем зелёную кнопку "merge" - ### Resolve conflicts - - Если возникает конфликт при слиянии, нажимаем "web editor", или "github desktop" - ![изображение](https://github.com/user-attachments/assets/9253262b-f940-47f5-bda9-510ef3a59b6f) - - Нажимаем Resolve - - Устраняем конфликт вручную, путём вырезания ненужных строк - Example - - Нажимаем Mark as resolved - ![изображение](https://github.com/user-attachments/assets/95875526-f125-47c9-91d5-8e9f39ed4dce) - ---- - -2. **Сложный конфликт** - -Screenshot 2024-11-28 at 1 21 12 AM - -- Переходим в курсор и жмём на клиент гита - -Screenshot 2024-11-28 at 1 21 12 AM - -- Затрекайте свои временные изменения в коммит, нажмите "+" чтобы внести изменения в трекинг систему гит -- Список Chahges должен быть пустым -- Дополнительно можете ещё раз убедиться что всё готово к слиянию веток, введите в терминал:``git status``, список файлов должен быть зелёный -Screenshot 2024-11-29 at 11 29 54 PM -Screenshot 2024-11-29 at 11 41 12 PM - -- чтобы сделать пустую строку между тайтл и дескрипшен жмём shift+enter, если в коммите участвуют системные файлы, которые я добавил, значит пишете, "update system files", Отправляем коммит нажатием на кнопку commit&push, и потом делаем merge веток - -Example - -- Внизу слева, должна быть написана **ваша ветка, которую вы создали** -- Нажимаем 3 точки, merge - -![изображение](https://github.com/user-attachments/assets/43b1620f-86c6-4679-a4b7-e37d31eeeba4) - -- выбираем из какой ветки будем мержиться, нажимаем на **"origin/main remote branch"**, то есть с той ветки которая лежит на сайте гитхаб, а не ,main которая у вас на компе, поздравляю, вы успешно обновили ветку, но иногда надо устранять конфликты вручную, поэтому если это ваш случай, читайте дальше доку. - -![изображение](https://github.com/user-attachments/assets/89b59451-31e2-4f5a-8333-c7e093cf304f) - -- Нажимаем accept current change , это то что пришло с гитхаба, наши локальные данные удаляться. - -![изображение](https://github.com/user-attachments/assets/ca29e057-fd1b-4b99-b66b-6ac9e5c2bd8e) - -![изображение](https://github.com/user-attachments/assets/49afd7e8-d965-47a9-9254-10b76816bb6e) - -- отдаём коммит, ВЫ УСПЕШНО РЕШИЛИ КОНФЛИКТ И ОБНОВИЛИ ВЕТКУ! - ---- - -### Дальнейшее обучение и портфолио -- [Портфолио](https://youtu.be/CQ3J2nCkBSo?si=Sy8wc6IWHDahz3KY) - -- Все дальнейшее обучение и вклад будут осуществляться в этом репозитории. - -Следуя этим структурированным шагам, вы сможете обеспечить гладкий процесс внесения изменений и оставаться в соответствии с руководящими принципами репозитория. - ---- - -### Check hw -- [Создаёте ишьюс](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/issues), у вас 3 варианта: -- ишьюс-вопрос -- ишьюс-улучшение, если хотите помочь мне улучшить документацию, структуру папок и заработать баллы -- ишьюс-баг -- пишете содержательный тайтл, дескрипшен, запоминаете номер ишьюса, вы его будете вставлять в пул реквест, [инструкция как создать ишьюс](https://youtu.be/wR3gXOiRm10) - -- **Пример** -Screenshot 2024-11-28 at 2 24 08 PM - -- Вы можете попросить чтобы я проверил: - 1) сразу весь файл - 2) блок кода - 3) одну строку, кнопка "Copy permalink" нужно кликнуть на конкретную строку или выделить несколько строк, -Screenshot 2024-11-28 at 1 30 54 PM - - - -- [Открываете пул реквест в ветку main](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV/pulls), Тайтл копируем из ишьюс, в дескрипшен пишем Closes #НомерИшьюса, в моём примере это **Closes #35** -Screenshot 2024-11-28 at 1 30 54 PM -Screenshot 2024-11-28 at 1 30 54 PM - -- Присылайте ссылку на ишьюс в https://t.me/c/1937296927/3602, в посте пишете: -- копируете тайтл из ишьюса и добавляете 2 хэштега #open #issues -- Когда я проверю вашу домашку, я пришлю ссылку на ревью, в ответ на ваше сообщение, вам нужно будет поменять статус в посте на #closes - ---- - -Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать [здесь](https://t.me/c/1937296927/2415)! - - diff --git a/log.ipynb b/log.ipynb new file mode 100644 index 00000000..23cbbd01 --- /dev/null +++ b/log.ipynb @@ -0,0 +1,116 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Этот модуль содержит материалы, которые были рассмотрены на уроке.\"\"\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Дата занятия: 30.10.2024\n", + "В ходе занятия были рассмотрены следующие темы:\n", + "1. Пробежались по Git.\n", + "2. Теория событий:\n", + " - Совместные события\n", + " - Несовместные события\n", + " - Противоположные события\n", + " - Равнозначные события\n", + " - Группа событий\n", + " - Невозможные события\n", + " - Однозначные события\n", + " - Вероятностные события\n", + "3. Алгебра событий:\n", + " - Сложение событий\n", + " - Произведение событий\n", + "4. Вероятность событий:\n", + " - Классическая (априорная, до эксперимента)\n", + " - Статистическая (апостериорная, после эксперимента)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Дата занятия: 06.11.2024\n", + "1. Искали причины ошибок в гите\n", + "2. Начали тему комбинаторики" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Дата занятия 14.11.2024\n", + "1. Бином Ньютона (разложение степени сум двух членов на многочлен)\n", + "2. Треугольник Паскаля\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Дата занятия 23.11.2024\n", + "1. Что такое сочетание, размещение, перестановки. С повторениями и без\n", + "2. Задачи на тему комбинаторики\n", + "3. Начали тему теории вероятности\n", + "4. Разобрали несколько задач по теории вероятности" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Дата занятия 30.11.2024\n", + "1. Был экзамен по теории множеств и теории вероятности\n", + "2. Решали задачи на тему комбинаторики и теории вероятности" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Дата занятия 15.12.2024\n", + "1. Решали задачи по тер веру\n", + "2. Теорема сложения вероятностей несовместных событий" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Дата занятия 21.12.2024\n", + "1. Решали задачи по тер веру для несовместных событий\n", + "2. Условная вероятность\n", + "3. Решение задач на условную вероятность\n", + "4. Теорема умножения вероятностей зависимых событий" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/log.py b/log.py new file mode 100644 index 00000000..7dce8b7a --- /dev/null +++ b/log.py @@ -0,0 +1,52 @@ +"""Этот модуль содержит материалы, которые были рассмотрены на уроке.""" + +# +# Дата занятия: 30.10.2024 +# В ходе занятия были рассмотрены следующие темы: +# 1. Пробежались по Git. +# 2. Теория событий: +# - Совместные события +# - Несовместные события +# - Противоположные события +# - Равнозначные события +# - Группа событий +# - Невозможные события +# - Однозначные события +# - Вероятностные события +# 3. Алгебра событий: +# - Сложение событий +# - Произведение событий +# 4. Вероятность событий: +# - Классическая (априорная, до эксперимента) +# - Статистическая (апостериорная, после эксперимента) +# + +# Дата занятия: 06.11.2024 +# 1. Искали причины ошибок в гите +# 2. Начали тему комбинаторики + + +# Дата занятия 14.11.2024 +# 1. Бином Ньютона (разложение степени сум двух членов на многочлен) +# 2. Треугольник Паскаля +# + +# Дата занятия 23.11.2024 +# 1. Что такое сочетание, размещение, перестановки. С повторениями и без +# 2. Задачи на тему комбинаторики +# 3. Начали тему теории вероятности +# 4. Разобрали несколько задач по теории вероятности + +# Дата занятия 30.11.2024 +# 1. Был экзамен по теории множеств и теории вероятности +# 2. Решали задачи на тему комбинаторики и теории вероятности + +# Дата занятия 15.12.2024 +# 1. Решали задачи по тер веру +# 2. Теорема сложения вероятностей несовместных событий + +# Дата занятия 21.12.2024 +# 1. Решали задачи по тер веру для несовместных событий +# 2. Условная вероятность +# 3. Решение задач на условную вероятность +# 4. Теорема умножения вероятностей зависимых событий diff --git a/tests/quiz/quiz_1.txt b/tests/quiz/quiz_1.txt deleted file mode 100644 index 3258c5d9..00000000 --- a/tests/quiz/quiz_1.txt +++ /dev/null @@ -1,87 +0,0 @@ -Список вопросов к видео https://youtu.be/hW_7hodGxVU?si=tCEVs00xGt2q61eW (АЛГОРИТМ ПРИНЯТИЯ И ОТДАЧИ ДОМАШКИ): - -(ОПЦИОНАЛЬНО)В ответе подробно всё опишите и обязательно нужно указывать тайм код из видео где я это сказал, по желанию, дополнительно прикладываем скриншот из видео. -Если вы знаете ответы на вопросы из Вашего опыта, то таймкоды из видео не надо указывать и т.д. - -1) Как понять, что домашка пришла? -2) Как принять домашку? -3) Зачем нужна кнопка history и какие функции появляются при нажатии правой кнопки мыши на коммит? -3.1) Где брать ссылку на коммит? куда её отправлять? -4) Что такое файл лога? -4.1) Когда нужно его пушить? -5) Что такое интерпритатор? -6) Где можно выбрать интерпритатор? -7) Что такое модуль? -8) Как создать и отправить коммит? -9) Как посмотреть что коммит точно отправлен и находится в github? -10) Какая команда показывает что код не прошёл проверки на ошибки? -10.1) Напишите список линтеров которые используются для проверки кода и дайте их краткую характеристику. -11) Как узнать какой именно линтер не прошёл проверку? -12) Линтер Pylint видит markdown? -13) Номер ячейки в терминале и номер ячейки в vs code может отличаться? в каком случае? -14) Где посмотреть номер ячейки в vscode? -15) В каком формате ipynb отправляется в гитхаб? причём здесь JSON? -16) Где посмотреть в какой ячейке ошибка? -17) Как запустить терминал? -18) Что такое линтер? -19) В какой сайт нужно вставлять код ошибки если ошибка связана с pylint? -20) Секция pydocstyle в большинстве случае автоматический закрывается после исправления ошибок в каком линтере? -21) Что такое описание модуля? Оно должно отражать информацию о том что находится в модуле? -21) С какой git команды начинается утро программиста? -22) После внесения изменений в файлах, кнопка open in vs code пропадает в кошке, как по другому открыть vs code из кошки? -23) Что такое stash? - Общее объяснение концепции. -23.1) Как сохранить стэш? - git командa(подсказка: https://t.me/c/1937296927/3602/19531): - - Кнопка в vs code: - -23.2) Как восстановить стэш(подсказка: https://t.me/c/1937296927/3602/25747)?: - - git команда(подсказка: https://t.me/c/1937296927/3602/19531)?: - -23.3) Различие между стэшем и коммитом. - Когда лучше сохранить изменения в стэше, а когда коммитить. -23.4) Как просмотреть список сохраненных стэшей? - git команда (подсказка: https://t.me/c/1937296927/3602/19531): - -23.5) Как удалить стэш? - Команды для удаления отдельных стэшей или всех сразу. - git команда (подсказка: https://t.me/c/1937296927/3602/19531): - -23.6) Практические примеры использования стэша. - Краткие сценарии, где стэш помогает. - -24) Где посмотреть что есть конфликт в файлах? -24.1) Когда он появляется? -25) Как решить конфликт в файлах? -26) Напишиие правильное утверждение --Зелёное то что пришло с гитхаба и синее локальные изменения или синее то что пришло с гитхаба и зелёное это локальные изменения -27) Если мы работаем в одном файле, можно ли принять pull после того как вы спрячете в стэш свои изменения? -27.1) Что может произойти когда stash восстановите после принятия pull? -28) Сколько способов решения конфликтов было показано в видео? Напишите ЧИСЛО и укажите их способы. -29) Что делает кнопка complete merge? -30) В какой чат нужно писать если остались вопросы? -31) Что такое FORK? Зачем его делают? -32) Как скачать форкнутый репозиторий на локальный компьютер? -33) С какой вероятностью ваши ошибки были уже решены? и кто их решил? -34) Как создать файл в vs code? -35) Файл лога нужно заполнять в конце каждого урока? -================== - -Дополнительные вопросы: -1)Какая команда конвертирует файл в py из ipynb? -подсказка https://t.me/c/1937296927/1/26527 -2) Что такое пакетный менеджер? Вы пользуетесь пакетным менеджером conda или pip? Какой лучше использовать для дата сайнс? -3) Почему расширение py лучше чем ipynb? -4) Что такое pep8? -подсказка:https://peps.python.org/pep-0008/ -4.1) линтеры проверяют на соблюдение pep8? -4.2) Какая нотация используется для создания переменных? -ответ на 85-95 страницы https://t.me/c/1937296927/1/16676 -4.3) Может ли переменная состоять из одной буквы например андерскор "_" ? -4.4) Зачем и где мы используем андерскор _ -4.5) По PEP8 допустима переменная в одну букву? -ответ на 85-95 страницы https://t.me/c/1937296927/1/16676 - - diff --git a/tests/quiz/quiz_2.txt b/tests/quiz/quiz_2.txt deleted file mode 100644 index eb328c6c..00000000 --- a/tests/quiz/quiz_2.txt +++ /dev/null @@ -1,78 +0,0 @@ -Список вопросов к видео https://www.youtube.com/watch?v=Si9MfV8uJ-0 (НАСТРОЙКА VSCODE, перенос строк, линтеры, работа с ячейками): - -(ОПЦИОНАЛЬНО)В ответе подробно всё опишите и обязательно нужно указывать тайм код из видео где я это сказал, по желанию, дополнительно прикладываем скриншот из видео. -Если вы знаете ответы на вопросы из Вашего опыта, то таймкоды из видео не надо указывать и т.д. - -1. Как включить автосохранение данных в VSCODE? -2. Как настроить перенос строки? -3. Сколько символов по pep8 разрешено на строке? -4. Какие способы переноса строк показаны в видео: - -4.1 Строки с использованием обратного слэша (\) - -string_continued = "This is a long string that we want to " \ - "split across multiple lines." -print(string_continued) - -4.2 Тройные кавычки (''' или """) - -multi_line_string = """This is a string that spans -multiple lines. You can write freely -and it will keep the line breaks.""" -print(multi_line_string) - -4.3 Создание списка строк и объединение с помощью join - -strings = [ - "This is the first line.", - "This is the second line.", - "This is the third line." -] -result = "\n".join(strings) # Используем перенос строк '\n' -print(result) - -4.4 Использование круглых скобок для продолжения строки -long_string = ( - "This is a very long string that I would like to " - "continue on the next line." -) -print(long_string) - -4.5 Форматированные строки (f-строки) с использованием скобок -letter_a = 5 -letter_b = 6 -product_ab = letter_a * letter_b - -message = ( - f"when {letter_a} is multiplied by {letter_b}, " - f"the result is {product_ab}" -) -print(message) - -4.6 Сложение строк с помощью + - -string_part1 = "This is the first part, " -string_part2 = "and this is the second part." -full_string = string_part1 + string_part2 -print(full_string) - -5. Проверка на ошибки c помощью кнопки problems, где она находится? -6. Где в vscode находится клиент гита? как в нём отправить коммит? как принять домашку? -7. Что такое GIT? он локальный? В нём можно посмотреть историю изменений файлов и вернуться к любому коммиту? -8. Как вставить картинку в маркдаун? -9. Где посмотреть длину строки в vs code? -10. Как поменять тип ячейки с питона на маркдаун? -11. Как запустить сразу все ячейки в юпитере? -12. Как изменить размер картинки в юпитере? Нужно для этого знать HTML? -13. Какой хоткей чтобы запустить ячейку с смещением на следующую? -14. Как включить отображение номеров строк в юпитере(Cell line numbers)? -15. Что такое "Go To" чем это полезно? Как перейти сразу на ошибочную ячейку? -16. Как очистить вывод ячеек которые уже запущены? -17. Как работать одновременно в нескольких файлах в VSCODE? Что такое SPLIT? -18. Каким сочетанием убирается левый сайдбар? -19. Кнопка два листочка это наши локальные файлы? -20. Какая ошибка появилась в трассировке при запуске всех ячеек DICT или LIST? -21. Вы ознакомились с https://t.me/c/1937296927/832/19307? и ttps://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet? -22. Что такое валидация? -23. Что такое трассировка ошибки? -24. Что значит отвалился интерпритатор?