Как стать автором
Обновить
5
0
Alexander Kolesov @Junecode

Backend developer

Отправить сообщение

Бумажные книги по программированию — удобный инструмент или пережиток прошлого?

Время на прочтение5 мин
Количество просмотров11K

Нашёл у себя в ящике стола один очень старый каталог книг Microsoft Press за 1988–89 годы. Мне нравится иногда его доставать, перечитывать описания компьютерных книг тех лет, разглядывать их обложки. Да и просто названия книжек из этого проспекта заставляют погрузиться в ностальгическое настроение.

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

Читать далее
Всего голосов 33: ↑30 и ↓3+40
Комментарии68

Моржовый оператор := в Python

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров28K

Python постоянно развивается: с каждой новой версией появляются различные оптимизации, активно внедряются новые инструменты. Так, в Python 3.8 появился моржовый оператор (:=), который стал причиной бурных споров в сообществе. О нем и пойдет речь в этой статье.

А начнем мы с истории о том, как моржовый оператор довел Гвидо ван Россума, создателя Python, до ухода с должности "великодушного пожизненного диктатора" проекта по разработке языка.

Читать далее
Всего голосов 104: ↑101 и ↓3+104
Комментарии52

Работает — не трожь: зачем обновлять Python в долгоживущих проектах

Время на прочтение15 мин
Количество просмотров17K

Всем привет! Меня зовут Сергей Яхницкий. Я пишу на Python уже больше шести лет, техлид в Яндекс Такси, Python-евангелист и член Python-комитета Яндекса (аналог Python Steering Council).

Человек я простой, звёзд с Гитхаба не хватал: до того, как я устроился в Такси, я мирно писал маленькие бэкенды на Python. А потом меня прорвало: кодогенерации, CI/CD, кучи тестов, монорепа и прочее. Вот тут-то моя питоничья душа и воспряла. Решил я всё автоматизировать, обновить всё, что движется, а что не движется — подвигать и обновить. Из этого вышел мой рассказ.

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

Читать далее
Всего голосов 61: ↑59 и ↓2+69
Комментарии23

Python. Внутреннее устройство множеств set и словарей dict. Часть 2 из 2

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.4K

Продолжение Части 1

4. Хэш-таблицы в dict
4.1. Как компактный dict экономит место и сохраняет порядок
4.2 Алгоритм добавления элементов в компактный dict
4.3. dict с общим доступом к ключам
4.4. Практические выводы по тому как работает dict

Читать далее
Всего голосов 10: ↑9 и ↓1+11
Комментарии2

Его величество Граф

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров5.7K

Графы для меня особенная тема, в них есть нечто таинственное и мощное.

В университете и в школе мы не проходили теорию графов. На работе никогда не произносили это слово. Но графы везде. И можно значительно упростить себе жизнь, если научиться видеть их и использовать многочисленные наработки по визуализации и алгоритмам.

Я не буду рассказывать основы графов, они есть в Википедии.

Цель статьи — поделиться с вами некоторыми случаями из моей практики, когда графы становились естественной частью какой‑то задачи. Иногда без них задачу решить было невозможно. Иногда через них решение получалось более изящное. А иногда просто тяга к перфекционизму, графы это круто же).

Ну что, поехали, будет интересно!

Читать далее
Всего голосов 11: ↑11 и ↓0+17
Комментарии21

Секреты логических операторов в Python

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров19K

Логические операции играют важную роль в программировании. Они используются для создания условных конструкций и составления сложных алгоритмов. В Python для проведения логических операций используются логические операторы:

not — логическое отрицание

and — логическое умножение

or — логическое сложение

В этой статье мы поговорим о неочевидных деталях и скрытых особенностях работы логических операторов в Python.

Читать далее
Всего голосов 93: ↑91 и ↓2+99
Комментарии37

Лучшие практики для надёжной работы с RabbitMQ

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров25K

Привет, Хабр! Я Женя, архитектор интеграционной платформы в Точке, отвечаю за асинхронный обмен сообщениями между внутренними сервисами, за ESB и за брокеры сообщений.

В этой статье я постарался кратко и последовательно изложить основные моменты, о которых полезно помнить при использовании RabbitMQ, если важны стабильность обмена и сохранность данных.

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

Следуй за белым кроликом
Всего голосов 58: ↑58 и ↓0+59
Комментарии16

Ускорение роутера в Django в 51 раз

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров13K

История началась с разбора использования ресурсов приложением, которое занимается проксированием. Обнаружили, что довольно много времени оно тратит на выбор маршрута (роута), и решили ускорить этот процесс. Описанная в статье оптимизация не требует каких-то особых вложений, усилий или условий, поэтому приведенный код можно забрать к себе и использовать без каких-либо чрезмерных вмешательств.

Читать далее
Всего голосов 54: ↑53 и ↓1+61
Комментарии17

Лучшие open-source инструменты для Python проектов

Время на прочтение12 мин
Количество просмотров34K

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

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

Читать далее
Всего голосов 33: ↑30 и ↓3+35
Комментарии9

Блокировка Docker Hub для России. Без паники разбираемся как работать дальше

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров69K

Главной новостью этой недели стала блокировка пользователей из России ресурсом Docker Hub. Она осуществляется по Geo IP.

Ирония в том, что у самого докера есть инструменты, чтобы обойти эту блокировку. Используем докер, чтобы обойти блокировку докера и дальше использовать докер.

В статье три проверенных мною способа, как получить доступ к ресурсу.

Читать далее
Всего голосов 81: ↑77 и ↓4+93
Комментарии47

Все числа равны, но некоторые равнее. Как в Python сравниваются Int и Float

Время на прочтение17 мин
Количество просмотров15K

Ещё одна причуда Python, исследование её подноготной и попытка понять, почему так случается.

Недавно в сети X был популярен этот твит (см. скриншот), и я обратил внимание. Это очередной сюрприз в Python, связанный с характерными для него уникальными деталями реализации.

Читать далее
Всего голосов 41: ↑39 и ↓2+46
Комментарии33

Python — Эволюция создания объектов (вторая часть)

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.4K

Как упростить себе жизнь или почему ты должен уметь создавать объекты правильно?

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

Во второй части мы продолжаем усложнять наш пример, выдумывая различные требования, чтобы посмотреть на возможный путь эволюции создания объекта.

Читать далее
Всего голосов 5: ↑4 и ↓1+5
Комментарии2

Магия музеев или что могут технологии

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.3K

Привет! На Хабре рассказывают про технологии, поэтому я выбрала подходящую и красивую тему. В этом посте рассказ пойдет об онлайн-музеях — какие из них стоит посмотреть, где искать ссылки, как и почему музеи оцифровывают коллекции.

Я, riaria — специалист по арткрайму и OSINT энтузиаст, расскажу, что остается за кадром. Кстати, 18 мая Международный день музеев и узнать побольше о том, что обычно скрывается от посетителей — отличный способ его отметить!

Вперед по музеям →
Всего голосов 9: ↑8 и ↓1+10
Комментарии4

DIY для шпиона: использование обнаружения объектов с помощью YOLOv8 в рамках военных стратегий

Время на прочтение8 мин
Количество просмотров8.8K

Применим геопространственную разведку для точного количественного учета воздушных судов противника? Используем для этого технологию обнаружения объектов YOLOv8 на основе аэрофотосъемки, выполненной разведывательными беспилотниками, что обеспечит надежное планирование военных действий.

В рамках глобальной системы мониторинга, известной как «The Machine». , функционируют разнообразные элементы. Данная система объединяет множество устройств, распределенных по всему земному шару, что обеспечивает комплексное наблюдение. Это позволяет государственным органам осуществлять мониторинг за индивидуальными лицами, анализировать общественные поведенческие тенденции и контролировать военные объекты на международном уровне. Геопространственная разведка (GEOINT) занимает центральное место в этой системе.

В этой статье основное внимание уделим GEOINT в качестве ключевого средства для мониторинга военных авиабаз противника. Такой подход к наблюдению за объектами и базирующейся на них авиацией способствует глубокой проработке стратегии и тактики ведения боевых действий.

Читать далее
Всего голосов 27: ↑23 и ↓4+24
Комментарии2

Python — Эволюция создания объектов (первая часть)

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.2K

Как упростить себе жизнь или почему ты должен уметь создавать объекты правильно?

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

В вопросе "как создавать объект?" я сторонник эволюционного подхода. Я не стремлюсь использовать порождающие паттерны при первой возможности. У меня есть простой набор вопросов самому себе, который помогает мне принять решение, стоит ли изменить способ создания объекта или нет.

Читать далее
Всего голосов 11: ↑10 и ↓1+10
Комментарии10

GitHub Copilot в JetBrains IDEs в РФ

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров24K

В 2022 году в публичный доступ вышел GitHub Copilot – довольно удобный современный инструмент для разработчиков. В этой короткой статье поделюсь своим опытом взаимодействия с GitHub Copilot, а главное тем, как его использовать в IDE от JetBrains. Приятного чтения!

Читать далее
Всего голосов 23: ↑12 и ↓11+6
Комментарии45

Топовые подходы к решению алгоритмических задач

Время на прочтение11 мин
Количество просмотров25K

Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. В этой статье я расскажу про ключевые аспекты и концепции работы с наиболее популярными алгоритмами и структурами данных. Это поможет и в реальных проектах, и чтобы глубже понять алгоритмические принципы. Статья подойдёт специалистам, которые хотят углубить свои знания в программировании, и укрепить навыки нахождения оптимальных решений алгоритмических задач.

Читать далее
Всего голосов 13: ↑13 и ↓0+16
Комментарии10

Как работать с процессами и потоками в Python

Время на прочтение16 мин
Количество просмотров86K

Раскрывать тему параллельного или асинхронного программирования непросто. Во-первых, она перегружена терминологией и трудна для понимания. Как правило, тонкости и особенности работы с языками усваиваются, лишь когда столкнешься с ними на практике. Во-вторых, в контексте Python тоже много своих подводных камней. Но сегодня почти любой современный web-сервис сталкивается с необходимостью многопоточности или асинхронности. Поскольку это многопользовательская среда, мы хотим направить всю процессорную мощность не на ожидание, а на решение прикладных задач бизнеса, чтобы все пользователи во время получили необходимые данные. 

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

Читать далее
Всего голосов 17: ↑15 и ↓2+16
Комментарии16

Вы должны перестать вручную писать Dockerfile'ы

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров55K

Вы тоже устали вручную заполнять Dockerfile и docker-compose.yaml под каждый новый проект?

Я всегда задумывался, применяю ли я известные best practices, когда пишу конфиг для Docker, и не занесу ли я случайно какие-нибудь уязвимости, вручную заполняя конфиг-файлы.

Что же, теперь мне больше не придется беспокоиться об этом, благодаря добрым людям из Docker, которые недавно реализовали инструмент для этого - docker init .

Интересно, как экономить время и быстро генерировать конфиги, даже если вы не профи в Docker? Прошу под кат.

Читать далее
Всего голосов 74: ↑71 и ↓3+76
Комментарии66

9 полезных крейтов в Rust

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров6.9K

Привет, Хабр!

Rust, как любимый многими разработчиками знаменит своей скоростью и безопасностью. Но его истинная сила заключается в экосистеме крейтов — библиотек и инструментов, которые могут превратить сложные и трудоёмкие задачи в удивительно простые и приятные процессы.

Крейты в Rust – это пакеты, которые можно использовать для расширения функциональности проектов.

Читать далее
Всего голосов 21: ↑15 и ↓6+11
Комментарии15
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer
Python
Docker
PostgreSQL
Django
RESTful API
Celery
asyncio
OOP
Git
Nginx