{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Тимур Полатов",
    "_rss_description": "делю на ноль, обогащаю уран",
    "_rss_language": "ru",
    "_itunes_email": "timur@polatov.me",
    "_itunes_categories_xml": "",
    "_itunes_image": "https:\/\/polatov.me\/pictures\/userpic\/userpic-square@2x.jpg?1694404576",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/polatov.me\/",
    "feed_url": "https:\/\/polatov.me\/?go=json\/",
    "icon": "https:\/\/polatov.me\/pictures\/userpic\/userpic@2x.jpg?1694404577",
    "authors": [
        {
            "name": "Тимур Полатов",
            "url": "https:\/\/polatov.me\/",
            "avatar": "https:\/\/polatov.me\/pictures\/userpic\/userpic@2x.jpg?1694404577"
        }
    ],
    "items": [
        {
            "id": "10",
            "url": "https:\/\/polatov.me\/?go=all\/funkcii-vysshego-poryadka-v-python\/",
            "title": "Функции высшего порядка в Python",
            "content_html": "<p>Python предоставляет мощные инструменты для обработки данных, известные как функции высшего порядка. Основными представителями этой категории являются `map`, `filter` и `reduce`. Данные функции позволяют эффективно работать с коллекциями данных, упрощая код и повышая его читаемость.<\/p>\n<h3>Функции высшего порядка<\/h3>\n<p>Функции высшего порядка — это функции, которые могут принимать другие функции в качестве аргументов или возвращать их. В Python `map`, `filter` и `reduce` являются наиболее часто используемыми функциями этого типа.<\/p>\n<h3>1. Функция reduce<\/h3>\n<p>Функция `reduce` применяется для свертки последовательности в единое значение. Она импортируется из модуля `functools`.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">from functools import reduce\r\n\r\nnumbers = [2, 3, 8]\r\nmax_number = reduce(lambda x, y: x if x &gt; y else y, numbers)\r\nprint(max_number)  # Выведет: 8<\/code><\/pre><p>В данном примере `reduce` используется для нахождения максимального числа в списке.<\/p>\n<h3>2. Функция filter<\/h3>\n<p>Функция `filter` применяется для отбора элементов последовательности, удовлетворяющих определенному условию.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">numbers = [2, 3, 8, 15, 34, 42]\r\neven_numbers = list(filter(lambda x: x % 2 == 0, numbers))\r\nprint(even_numbers)  # Выведет: [2, 8, 34, 42]<\/code><\/pre><p>Здесь `filter` используется для выбора четных чисел из списка.<\/p>\n<h3>3. Функция map<\/h3>\n<p>Функция `map` применяет заданную функцию к каждому элементу последовательности.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">numbers = [1, 2, 3, 4, 5]\r\nsquared = list(map(lambda x: x**2, numbers))\r\nprint(squared)  # Выведет: [1, 4, 9, 16, 25]<\/code><\/pre><p>В этом примере `map` используется для возведения каждого числа в квадрат.<\/p>\n<h3>Рекомендации по использованию<\/h3>\n<p>При использовании функций высшего порядка рекомендуется избегать побочных эффектов в передаваемых функциях. Это означает, что функции не должны изменять глобальные переменные или производить вывод. Такой подход обеспечивает чистоту и предсказуемость кода.<\/p>\n",
            "date_published": "2024-07-31T11:18:18+05:00",
            "date_modified": "2024-07-31T11:31:12+05:00",
            "tags": [
                "python"
            ],
            "_date_published_rfc2822": "Wed, 31 Jul 2024 11:18:18 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "10",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "9",
            "url": "https:\/\/polatov.me\/?go=all\/metody-obnovleniya-mnozhestv-po-mestu-v-python\/",
            "title": "Методы обновления множеств «по месту» в Python",
            "content_html": "<p>В Python существуют методы для обновления множеств «по месту», что означает, что они изменяют текущее множество без создания нового. Эти методы позволяют выполнять различные операции над множествами «по месту».<\/p>\n<h3>1. `difference_update()`<\/h3>\n<p>Метод `difference_update()` удаляет из текущего множества все элементы, которые присутствуют в другом множестве. Это означает, что текущее множество становится разностью двух множеств.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5}\r\nA.difference_update(B)  # Теперь A содержит {1, 2}<\/code><\/pre><h3>2. `intersection_update()`<\/h3>\n<p>Метод `intersection_update()` оставляет в текущем множестве только элементы, которые также присутствуют в другом множестве. Это означает, что текущее множество становится пересечением двух множеств.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5}\r\nA.intersection_update(B)  # Теперь A содержит {3, 4}<\/code><\/pre><h3>3. `symmetric_difference_update()`<\/h3>\n<p>Метод `symmetric_difference_update()` заменяет текущее множество его симметричной разностью с другим множеством. Симметричная разность множества содержит элементы, которые присутствуют только в одном из множеств.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5}\r\nA.symmetric_difference_update(B)  # Теперь A содержит {1, 2, 5}<\/code><\/pre><h3>4. `update()`<\/h3>\n<p>Метод `update()` добавляет элементы из другого множества (или других итерируемых объектов) в текущее множество. Этот метод обновляет текущее множество «по месту».<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3}\r\nB = {3, 4, 5}\r\nA.update(B)  # Теперь A содержит {1, 2, 3, 4, 5}<\/code><\/pre><p>Использование методов обновления «по месту» позволяет изменять множества без необходимости создавать новые объекты, что может быть полезно при работе с большими объемами данных и требует меньше системных ресурсов.<\/p>\n",
            "date_published": "2023-12-08T12:46:32+05:00",
            "date_modified": "2023-12-08T12:46:27+05:00",
            "tags": [
                "python",
                "set",
                "коллекции",
                "множества"
            ],
            "_date_published_rfc2822": "Fri, 08 Dec 2023 12:46:32 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "9",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "8",
            "url": "https:\/\/polatov.me\/?go=all\/operacii-nad-mnozhestvami-v-python-sravnenie-obedinenie-i-izvlec\/",
            "title": "Операции над множествами в Python: сравнение, объединение и извлечение уникальных элементов",
            "content_html": "<h3>1. Объединение (Union)<\/h3>\n<p>Объединение множеств — это операция, которая позволяет объединить два или более множества в одно, оставив только уникальные элементы. В Python это можно сделать с помощью оператора `|` или метода `union()`.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5, 6}\r\nresult = A | B  # Результат: {1, 2, 3, 4, 5, 6}<\/code><\/pre><h3>2. Пересечение (Intersection)<\/h3>\n<p>Пересечение множеств — это операция, которая возвращает только общие элементы между двумя или более множествами. В Python это можно сделать с помощью оператора `&` или метода `intersection()`.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5, 6}\r\nresult = A &amp; B  # Результат: {3, 4}<\/code><\/pre><h3>3. Разность (Difference)<\/h3>\n<p>Разность множеств — это операция, которая возвращает элементы, присутствующие в одном множестве, но отсутствующие в другом. В Python это можно сделать с помощью оператора `-` или метода `difference()`.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5, 6}\r\nresult1 = A - B  # Результат: {1, 2}\r\nresult2 = B - A  # Результат: {5, 6}<\/code><\/pre><h3>4. Симметрическая разность (Symmetric Difference)<\/h3>\n<p>Симметрическая разность множеств — это операция, которая возвращает элементы, присутствующие в одном множестве или другом, но не в обоих сразу. В Python это можно сделать с помощью оператора `^` или метода `symmetric_difference()`.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">A = {1, 2, 3, 4}\r\nB = {3, 4, 5, 6}\r\nresult = A ^ B  # Результат: {1, 2, 5, 6}<\/code><\/pre>",
            "date_published": "2023-12-08T12:25:52+05:00",
            "date_modified": "2024-04-02T17:37:17+05:00",
            "tags": [
                "python",
                "set",
                "коллекции",
                "множества"
            ],
            "_date_published_rfc2822": "Fri, 08 Dec 2023 12:25:52 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "8",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "7",
            "url": "https:\/\/polatov.me\/?go=all\/shpargalka-po-osnovam-raboty-s-poetry\/",
            "title": "Шпаргалка по основам работы с Poetry",
            "content_html": "<p><b>Poetry<\/b> —  инструмент для управления зависимостями и пакетами в проектах на Python, который решает множество проблем, связанных с установкой пакетов, управлением версиями и сборкой проекта. Преимущества использования Poetry, в том что все зависимости и их версии контролируются в одном месте, а также в том, что инструмент самостоятельно создает и управляет виртуальными средами проектов.<\/p>\n<p>Для описания зависимостей и настроек проекта использует файл `pyproject.toml`, заменяя традиционные `setup.py` и `requirements.txt`.<\/p>\n<p><b>Установка Poetry<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">curl -sSL https:\/\/raw.githubusercontent.com\/python-poetry\/poetry\/master\/get-poetry.py | python -<\/code><\/pre><p><b>Создание нового проекта<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">poetry new my_project<\/code><\/pre><p>Это создаст новую структуру каталогов с начальными файлами для проекта `my_project`.<\/p>\n<p><b>Управление зависимостями<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">poetry add package_name<\/code><\/pre><p>Poetry автоматически обновит файл `pyproject.toml` и `poetry.lock`, обеспечивая управление версиями.<\/p>\n<p><b>Установка зависимостей<\/b><br \/>\nУстановка всех зависимостей, перечисленных в `pyproject.toml`:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">poetry install<\/code><\/pre><p>Это создаст виртуальную среду и установит в нее все необходимые зависимости.<\/p>\n<p><b>Сборка и публикация<\/b><br \/>\nPoetry также упрощает сборку и публикацию пакета. Собрать пакет можно командой:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">poetry build<\/code><\/pre><p>Публикация пакета в PyPI:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">poetry publish<\/code><\/pre>",
            "date_published": "2023-11-21T16:52:56+05:00",
            "date_modified": "2023-11-22T09:45:34+05:00",
            "tags": [
                "poetry",
                "python"
            ],
            "_date_published_rfc2822": "Tue, 21 Nov 2023 16:52:56 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "7",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "6",
            "url": "https:\/\/polatov.me\/?go=all\/reshenie-konflikta-mezhdu-lokalnoy-i-udalennoy-vetkami-v-git\/",
            "title": "Решение конфликта между локальной и удаленной ветками в Git",
            "content_html": "<p>В процессе работы с Git часто возникают ситуации, когда изменения, внесенные в удаленный репозиторий, не синхронизированы с локальной копией. Это может привести к ошибкам при попытке отправить локальные изменения на удаленный сервер.<\/p>\n<h2><b>Сценарий конфликта:<\/b><\/h2>\n<p><b>1. Изменения в удаленном репозитории<\/b>: Предположим, что в удаленном репозитории на GitHub были внесены изменения другими участниками проекта.<\/p>\n<p><b>2. Локальные изменения<\/b>: В то же время, разработчик вносит изменения в локальную копию проекта, не зная о новых изменениях в удаленном репозитории.<\/p>\n<p><b>3. Попытка отправки изменений<\/b>: При попытке отправить локальные изменения на GitHub, разработчик сталкивается с ошибкой, указывающей на расхождение между локальной и удаленной версиями.<\/p>\n<h2><b>Пример ошибки:<\/b><\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">user@laptop ~\/dev\/my_project $ git push\r\nTo github.com:user\/my_project.git\r\n ! [rejected]        main -&gt; main (fetch first)\r\nerror: не удалось отправить некоторые ссылки в «github.com:user\/my_project.git»\r\nподсказка: Updates were rejected because the remote contains work that you do not\r\nподсказка: have locally. This is usually caused by another repository pushing to\r\nподсказка: the same ref. If you want to integrate the remote changes, use\r\nподсказка: &#039;git pull&#039; before pushing again.\r\nподсказка: See the &#039;Note about fast-forwards&#039; in &#039;git push --help&#039; for details.<\/code><\/pre><h2><b>Методы решения:<\/b><\/h2>\n<p><b>1. Слияние (Merge)<\/b>: Этот метод объединяет изменения из удаленной ветки с локальными изменениями, создавая новый коммит.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git config pull.rebase false\r\ngit pull origin main<\/code><\/pre><p><b>2. Перебазирование (Rebase)<\/b>: Перебазирование применяет локальные изменения поверх изменений удаленной ветки.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git config pull.rebase true\r\ngit pull origin main<\/code><\/pre><h2><b>Разрешение конфликтов:<\/b><\/h2>\n<p>В процессе слияния или перебазирования могут возникнуть конфликты. Потребуется вручную разрешить эти конфликты, выбрав подходящие изменения, и затем продолжить процесс слияния или перебазирования.<\/p>\n",
            "date_published": "2023-11-14T11:42:56+05:00",
            "date_modified": "2023-11-14T12:03:07+05:00",
            "tags": [
                "git",
                "github"
            ],
            "_date_published_rfc2822": "Tue, 14 Nov 2023 11:42:56 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "4",
            "url": "https:\/\/polatov.me\/?go=all\/kak-zapushit-izmeneniya-v-github\/",
            "title": "Как запушить изменения в GitHub",
            "content_html": "<p>Для публикации изменений на GitHub необходимо выполнить следующие команды:<\/p>\n<p><b>1. Добавление изменений в индекс Git:<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git add .<\/code><\/pre><p>Эта команда добавляет все измененные файлы в индекс для следующего коммита. Можно указать конкретные файлы вместо точки.<\/p>\n<p><b>2. Создание коммита с описанием изменений:<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git commit -m &quot;Описание изменений&quot;<\/code><\/pre><p>Сообщение коммита должно кратко описывать произведенные изменения.<\/p>\n<p><b>3. Отправка изменений в удаленный репозиторий:<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git push origin main<\/code><\/pre><p>`origin` — имя удаленного репозитория, `main` — имя ветки для публикации. Имя ветки может отличаться и должно соответствовать ветке, предназначенной для изменений.<\/p>\n<p>При первой публикации изменений или при изменении настроек доступа Git может запросить учетные данные GitHub — имя пользователя и пароль или токен доступа.<\/p>\n<p>После выполнения этих команд изменения будут отправлены в удаленный репозиторий на GitHub.<\/p>\n",
            "date_published": "2023-11-08T10:30:11+05:00",
            "date_modified": "2023-11-08T10:29:56+05:00",
            "tags": [
                "git",
                "github"
            ],
            "_date_published_rfc2822": "Wed, 08 Nov 2023 10:30:11 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "3",
            "url": "https:\/\/polatov.me\/?go=all\/udalenie-paketa\/",
            "title": "Удаление пакета в Python",
            "content_html": "<p>Чтобы удалить пакет, установленный через `pip`, необходимо использовать команду `pip uninstall`, указав имя пакета. Имя пакета соответствует тому, что указано в сообщении об ошибке или в файле `pyproject.toml`. Например:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">python3 -m pip uninstall package_name<\/code><\/pre><p>Для удаления зависимости из проекта, управляемого Poetry, используется команда `poetry remove`, где `package_name` — это имя пакета, указанное в `pyproject.toml`. Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">poetry remove requests<\/code><\/pre><p>Если требуется удалить основной пакет проекта из виртуального окружения, установленного через `pip`, следует использовать команду `pip uninstall`, как показано выше.<\/p>\n<p>В случае, когда после выполнения `poetry build` возникает сообщение о том, что пакет уже установлен, и необходимо выполнить переустановку, следует использовать флаг `—force-reinstall` с командой `pip install`. Пример команды для переустановки пакета:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">python3 -m pip install --user --force-reinstall dist\/*.whl<\/code><\/pre><p>Это приведет к переустановке пакета, даже если он уже присутствует в системе.<\/p>\n",
            "date_published": "2023-11-08T10:11:13+05:00",
            "date_modified": "2023-11-08T10:12:47+05:00",
            "tags": [
                "pip",
                "poetry",
                "python"
            ],
            "_date_published_rfc2822": "Wed, 08 Nov 2023 10:11:13 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "3",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4116,
    "_e2_ua_string": "Aegea 11.2 (v4116e)"
}