<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Тимур Полатов</title>
<link>https://polatov.me/</link>
<description>делю на ноль, обогащаю уран</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.2 (v4116e)</generator>

<itunes:owner>
<itunes:name></itunes:name>
<itunes:email>timur@polatov.me</itunes:email>
</itunes:owner>
<itunes:subtitle>делю на ноль, обогащаю уран</itunes:subtitle>
<itunes:image href="https://polatov.me/pictures/userpic/userpic-square@2x.jpg?1694404576" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Функции высшего порядка в Python</title>
<guid isPermaLink="false">10</guid>
<link>https://polatov.me/?go=all/funkcii-vysshego-poryadka-v-python/</link>
<pubDate>Wed, 31 Jul 2024 11:18:18 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/funkcii-vysshego-poryadka-v-python/</comments>
<description>
&lt;p&gt;Python предоставляет мощные инструменты для обработки данных, известные как функции высшего порядка. Основными представителями этой категории являются `map`, `filter` и `reduce`. Данные функции позволяют эффективно работать с коллекциями данных, упрощая код и повышая его читаемость.&lt;/p&gt;
&lt;h3&gt;Функции высшего порядка&lt;/h3&gt;
&lt;p&gt;Функции высшего порядка — это функции, которые могут принимать другие функции в качестве аргументов или возвращать их. В Python `map`, `filter` и `reduce` являются наиболее часто используемыми функциями этого типа.&lt;/p&gt;
&lt;h3&gt;1. Функция reduce&lt;/h3&gt;
&lt;p&gt;Функция `reduce` применяется для свертки последовательности в единое значение. Она импортируется из модуля `functools`.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;from functools import reduce

numbers = [2, 3, 8]
max_number = reduce(lambda x, y: x if x &amp;gt; y else y, numbers)
print(max_number)  # Выведет: 8&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В данном примере `reduce` используется для нахождения максимального числа в списке.&lt;/p&gt;
&lt;h3&gt;2. Функция filter&lt;/h3&gt;
&lt;p&gt;Функция `filter` применяется для отбора элементов последовательности, удовлетворяющих определенному условию.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;numbers = [2, 3, 8, 15, 34, 42]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Выведет: [2, 8, 34, 42]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Здесь `filter` используется для выбора четных чисел из списка.&lt;/p&gt;
&lt;h3&gt;3. Функция map&lt;/h3&gt;
&lt;p&gt;Функция `map` применяет заданную функцию к каждому элементу последовательности.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # Выведет: [1, 4, 9, 16, 25]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В этом примере `map` используется для возведения каждого числа в квадрат.&lt;/p&gt;
&lt;h3&gt;Рекомендации по использованию&lt;/h3&gt;
&lt;p&gt;При использовании функций высшего порядка рекомендуется избегать побочных эффектов в передаваемых функциях. Это означает, что функции не должны изменять глобальные переменные или производить вывод. Такой подход обеспечивает чистоту и предсказуемость кода.&lt;/p&gt;
</description>
</item>

<item>
<title>Методы обновления множеств «по месту» в Python</title>
<guid isPermaLink="false">9</guid>
<link>https://polatov.me/?go=all/metody-obnovleniya-mnozhestv-po-mestu-v-python/</link>
<pubDate>Fri, 08 Dec 2023 12:46:32 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/metody-obnovleniya-mnozhestv-po-mestu-v-python/</comments>
<description>
&lt;p&gt;В Python существуют методы для обновления множеств «по месту», что означает, что они изменяют текущее множество без создания нового. Эти методы позволяют выполнять различные операции над множествами «по месту».&lt;/p&gt;
&lt;h3&gt;1. `difference_update()`&lt;/h3&gt;
&lt;p&gt;Метод `difference_update()` удаляет из текущего множества все элементы, которые присутствуют в другом множестве. Это означает, что текущее множество становится разностью двух множеств.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5}
A.difference_update(B)  # Теперь A содержит {1, 2}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;2. `intersection_update()`&lt;/h3&gt;
&lt;p&gt;Метод `intersection_update()` оставляет в текущем множестве только элементы, которые также присутствуют в другом множестве. Это означает, что текущее множество становится пересечением двух множеств.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5}
A.intersection_update(B)  # Теперь A содержит {3, 4}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;3. `symmetric_difference_update()`&lt;/h3&gt;
&lt;p&gt;Метод `symmetric_difference_update()` заменяет текущее множество его симметричной разностью с другим множеством. Симметричная разность множества содержит элементы, которые присутствуют только в одном из множеств.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5}
A.symmetric_difference_update(B)  # Теперь A содержит {1, 2, 5}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;4. `update()`&lt;/h3&gt;
&lt;p&gt;Метод `update()` добавляет элементы из другого множества (или других итерируемых объектов) в текущее множество. Этот метод обновляет текущее множество «по месту».&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3}
B = {3, 4, 5}
A.update(B)  # Теперь A содержит {1, 2, 3, 4, 5}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Использование методов обновления «по месту» позволяет изменять множества без необходимости создавать новые объекты, что может быть полезно при работе с большими объемами данных и требует меньше системных ресурсов.&lt;/p&gt;
</description>
</item>

<item>
<title>Операции над множествами в Python: сравнение, объединение и извлечение уникальных элементов</title>
<guid isPermaLink="false">8</guid>
<link>https://polatov.me/?go=all/operacii-nad-mnozhestvami-v-python-sravnenie-obedinenie-i-izvlec/</link>
<pubDate>Fri, 08 Dec 2023 12:25:52 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/operacii-nad-mnozhestvami-v-python-sravnenie-obedinenie-i-izvlec/</comments>
<description>
&lt;h3&gt;1. Объединение (Union)&lt;/h3&gt;
&lt;p&gt;Объединение множеств — это операция, которая позволяет объединить два или более множества в одно, оставив только уникальные элементы. В Python это можно сделать с помощью оператора `|` или метода `union()`.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
result = A | B  # Результат: {1, 2, 3, 4, 5, 6}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;2. Пересечение (Intersection)&lt;/h3&gt;
&lt;p&gt;Пересечение множеств — это операция, которая возвращает только общие элементы между двумя или более множествами. В Python это можно сделать с помощью оператора `&amp;` или метода `intersection()`.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
result = A &amp;amp; B  # Результат: {3, 4}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;3. Разность (Difference)&lt;/h3&gt;
&lt;p&gt;Разность множеств — это операция, которая возвращает элементы, присутствующие в одном множестве, но отсутствующие в другом. В Python это можно сделать с помощью оператора `-` или метода `difference()`.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
result1 = A - B  # Результат: {1, 2}
result2 = B - A  # Результат: {5, 6}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;4. Симметрическая разность (Symmetric Difference)&lt;/h3&gt;
&lt;p&gt;Симметрическая разность множеств — это операция, которая возвращает элементы, присутствующие в одном множестве или другом, но не в обоих сразу. В Python это можно сделать с помощью оператора `^` или метода `symmetric_difference()`.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
result = A ^ B  # Результат: {1, 2, 5, 6}&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Шпаргалка по основам работы с Poetry</title>
<guid isPermaLink="false">7</guid>
<link>https://polatov.me/?go=all/shpargalka-po-osnovam-raboty-s-poetry/</link>
<pubDate>Tue, 21 Nov 2023 16:52:56 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/shpargalka-po-osnovam-raboty-s-poetry/</comments>
<description>
&lt;p&gt;&lt;b&gt;Poetry&lt;/b&gt; —  инструмент для управления зависимостями и пакетами в проектах на Python, который решает множество проблем, связанных с установкой пакетов, управлением версиями и сборкой проекта. Преимущества использования Poetry, в том что все зависимости и их версии контролируются в одном месте, а также в том, что инструмент самостоятельно создает и управляет виртуальными средами проектов.&lt;/p&gt;
&lt;p&gt;Для описания зависимостей и настроек проекта использует файл `pyproject.toml`, заменяя традиционные `setup.py` и `requirements.txt`.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Установка Poetry&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Создание нового проекта&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;poetry new my_project&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это создаст новую структуру каталогов с начальными файлами для проекта `my_project`.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Управление зависимостями&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;poetry add package_name&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Poetry автоматически обновит файл `pyproject.toml` и `poetry.lock`, обеспечивая управление версиями.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Установка зависимостей&lt;/b&gt;&lt;br /&gt;
Установка всех зависимостей, перечисленных в `pyproject.toml`:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;poetry install&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это создаст виртуальную среду и установит в нее все необходимые зависимости.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Сборка и публикация&lt;/b&gt;&lt;br /&gt;
Poetry также упрощает сборку и публикацию пакета. Собрать пакет можно командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;poetry build&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Публикация пакета в PyPI:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;poetry publish&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Решение конфликта между локальной и удаленной ветками в Git</title>
<guid isPermaLink="false">6</guid>
<link>https://polatov.me/?go=all/reshenie-konflikta-mezhdu-lokalnoy-i-udalennoy-vetkami-v-git/</link>
<pubDate>Tue, 14 Nov 2023 11:42:56 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/reshenie-konflikta-mezhdu-lokalnoy-i-udalennoy-vetkami-v-git/</comments>
<description>
&lt;p&gt;В процессе работы с Git часто возникают ситуации, когда изменения, внесенные в удаленный репозиторий, не синхронизированы с локальной копией. Это может привести к ошибкам при попытке отправить локальные изменения на удаленный сервер.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Сценарий конфликта:&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;1. Изменения в удаленном репозитории&lt;/b&gt;: Предположим, что в удаленном репозитории на GitHub были внесены изменения другими участниками проекта.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. Локальные изменения&lt;/b&gt;: В то же время, разработчик вносит изменения в локальную копию проекта, не зная о новых изменениях в удаленном репозитории.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. Попытка отправки изменений&lt;/b&gt;: При попытке отправить локальные изменения на GitHub, разработчик сталкивается с ошибкой, указывающей на расхождение между локальной и удаленной версиями.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Пример ошибки:&lt;/b&gt;&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;user@laptop ~/dev/my_project $ git push
To github.com:user/my_project.git
 ! [rejected]        main -&amp;gt; main (fetch first)
error: не удалось отправить некоторые ссылки в «github.com:user/my_project.git»
подсказка: Updates were rejected because the remote contains work that you do not
подсказка: have locally. This is usually caused by another repository pushing to
подсказка: the same ref. If you want to integrate the remote changes, use
подсказка: &amp;#039;git pull&amp;#039; before pushing again.
подсказка: See the &amp;#039;Note about fast-forwards&amp;#039; in &amp;#039;git push --help&amp;#039; for details.&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;b&gt;Методы решения:&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;1. Слияние (Merge)&lt;/b&gt;: Этот метод объединяет изменения из удаленной ветки с локальными изменениями, создавая новый коммит.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;git config pull.rebase false
git pull origin main&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;2. Перебазирование (Rebase)&lt;/b&gt;: Перебазирование применяет локальные изменения поверх изменений удаленной ветки.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;git config pull.rebase true
git pull origin main&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;b&gt;Разрешение конфликтов:&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;В процессе слияния или перебазирования могут возникнуть конфликты. Потребуется вручную разрешить эти конфликты, выбрав подходящие изменения, и затем продолжить процесс слияния или перебазирования.&lt;/p&gt;
</description>
</item>

<item>
<title>Как запушить изменения в GitHub</title>
<guid isPermaLink="false">4</guid>
<link>https://polatov.me/?go=all/kak-zapushit-izmeneniya-v-github/</link>
<pubDate>Wed, 08 Nov 2023 10:30:11 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/kak-zapushit-izmeneniya-v-github/</comments>
<description>
&lt;p&gt;Для публикации изменений на GitHub необходимо выполнить следующие команды:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. Добавление изменений в индекс Git:&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;git add .&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Эта команда добавляет все измененные файлы в индекс для следующего коммита. Можно указать конкретные файлы вместо точки.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. Создание коммита с описанием изменений:&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;git commit -m &amp;quot;Описание изменений&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Сообщение коммита должно кратко описывать произведенные изменения.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. Отправка изменений в удаленный репозиторий:&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;git push origin main&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;`origin` — имя удаленного репозитория, `main` — имя ветки для публикации. Имя ветки может отличаться и должно соответствовать ветке, предназначенной для изменений.&lt;/p&gt;
&lt;p&gt;При первой публикации изменений или при изменении настроек доступа Git может запросить учетные данные GitHub — имя пользователя и пароль или токен доступа.&lt;/p&gt;
&lt;p&gt;После выполнения этих команд изменения будут отправлены в удаленный репозиторий на GitHub.&lt;/p&gt;
</description>
</item>

<item>
<title>Удаление пакета в Python</title>
<guid isPermaLink="false">3</guid>
<link>https://polatov.me/?go=all/udalenie-paketa/</link>
<pubDate>Wed, 08 Nov 2023 10:11:13 +0500</pubDate>
<author></author>
<comments>https://polatov.me/?go=all/udalenie-paketa/</comments>
<description>
&lt;p&gt;Чтобы удалить пакет, установленный через `pip`, необходимо использовать команду `pip uninstall`, указав имя пакета. Имя пакета соответствует тому, что указано в сообщении об ошибке или в файле `pyproject.toml`. Например:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;python3 -m pip uninstall package_name&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для удаления зависимости из проекта, управляемого Poetry, используется команда `poetry remove`, где `package_name` — это имя пакета, указанное в `pyproject.toml`. Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;poetry remove requests&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если требуется удалить основной пакет проекта из виртуального окружения, установленного через `pip`, следует использовать команду `pip uninstall`, как показано выше.&lt;/p&gt;
&lt;p&gt;В случае, когда после выполнения `poetry build` возникает сообщение о том, что пакет уже установлен, и необходимо выполнить переустановку, следует использовать флаг `—force-reinstall` с командой `pip install`. Пример команды для переустановки пакета:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;python3 -m pip install --user --force-reinstall dist/*.whl&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это приведет к переустановке пакета, даже если он уже присутствует в системе.&lt;/p&gt;
</description>
</item>


</channel>
</rss>