Date | Title | Description |
17.09.2024 | Navigating the Waters of Memory Leaks and Client Retention: Insights from Pinterest's Tech Journey | In the fast-paced world of technology, memory leaks can feel like hidden icebergs. They lurk beneath the surface, waiting to sink systems when least expected. Pinterest, a titan in the digital advertising space, recently faced such a challe... |
16.09.2024 | Опыт отладки хитрой утечки прямой памяти | Pinterest поддерживает формирование отчётов по метрикам рекламных объявлений внешних рекламодателей и расчёт рекламных бюджетов в реальном времени. Всё это основано на потоковых конвейерах обработки данных, созданных с помощью на Apache Fli... |
11.09.2024 | ML-подход к заблаговременному предотвращению оттока рекламодателей | В этом материале мы опишем систему для заблаговременного предотвращения оттока рекламодателей, основанную на машинном обучении (ML, Machine Learning). Прототип системы создан на основе данных организаций малого и среднего бизнеса (Small &am... |
01.09.2024 | Navigating the Complex World of System Design Interviews | In the fast-paced tech landscape, system design interviews have become a rite of passage for aspiring engineers. These interviews can feel like navigating a labyrinth, filled with twists, turns, and unexpected challenges. The stakes are hig... |
26.08.2024 | Как в Netflix сделали поиск по федеративному графу | За последние несколько лет те, кто занимается в Netflix направлением Content Engineering, перевели множество служб компании на использование федеративной платформы GraphQL. Этот процесс продолжается и сегодня. Применение федерации GraphQL д... |
19.08.2024 | Автоматизация управления ML-экспериментами с помощью СI/CD | TL;DR
Использование рабочих процессов CI/CD (Continuous Integration/Continuous Deployment (Delivery), непрерывная интеграция/непрерывное развёртывание (непрерывная доставка)) для проведения ML‑экспериментов (Machine Learning, машинное обуче... |
14.08.2024 | Обратный поиск по федеративному графу Netflix | В Netflix было сделано много нового со времён выхода предыдущих материалов, посвящённых роли тех, кто отвечает за направление Content Engineering, в реализации поиска по нашему федеративному графу (federated graph). А именно, в первой стать... |
05.08.2024 | Толстые хвосты распределений — это загадочно и странно | Если вы посещали занятия по статистике — вы, возможно, проходили тему «общая теория меры». Там могла идти речь о мере и об интеграле Лебега, а так же — об их связи с другими способами интегрирования. Если на ваших занятиях много внимания уд... |
29.07.2024 | О создании системы, преобразующей текст в SQL для аналитиков Pinterest | Написание запросов для решения аналитических задач — это основное занятие тех, кто работает с данными Pinterest. Но подбор подходящих данных и преобразование описания проблемы в корректный и эффективный SQL‑код могут оказаться непростыми де... |
22.07.2024 | Разработка бессерверного защищённого тайника для передачи сообщений | Однажды я наткнулся на вот эту потрясающую статью (здесь я о ней порассуждал), которая навела меня на одну мысль. Как я подошёл бы к задаче разработки тайника для передачи сообщений? И, если уж мы об этом заговорили — подумаем о том, что на... |
15.07.2024 | Как Notion проектировал свой data lake, чтобы успевать за быстрым ростом | За последние три года размер данных Notion увеличился в 10 раз из‑за роста количества пользователей и объёмов контента, с которым они работают. Удвоение этого показателя происходило каждые 6–12 месяцев. Нам нужно было справиться со стремите... |
08.07.2024 | Всё, что вам нужно — это линейное внимание | Можно ли реализовать механизм внутреннего внимания, потребляющий гораздо меньше ресурсов, чем обычно?
Говорят, что механизм внимания плохо переносит работу с последовательностями большой длины. Это — идея, которая встречалась любому, кто по... |
01.07.2024 | Pinterest: разработка всеобъемлющей JSON-системы логирования для клиентских приложений | В начале 2020 года у приложения Pinterest для iOS часто возникала серьёзная проблема, связанная с нехваткой памяти (у нас есть материал об этом). Тогда мы поняли, что у нас нет ни достаточно подробных сведений о работе приложений, ни хороше... |
28.06.2024 | The Intriguing Puzzle of Water Freezing Unraveled by Science | The enigmatic process of water freezing has long captivated the curiosity of scientists and researchers, leading to a deeper exploration of its complexities and mysteries. While the conventional wisdom dictates that water solidifies at the ... |
24.06.2024 | Почему модель не работает? | Было у вас когда‑нибудь такое: вы обучали модель, которую считали хорошей, а потом, на реальных данных, эта модель с треском проваливалась? Если так — это значит, что вы совсем не одиноки. Машинное обучение наполнено сложными процессами, уп... |
10.06.2024 | Простые способы ускорения обучения PyTorch-моделей | Не знаю — нужно ли вступление к статье, посвящённой ускорению машинного обучения (Machine Learning, ML)?
Ускорение обучения моделей — это именно то, в чём нуждаются все ML‑инженеры. Более быстрое обучение модели означает ускорение экспериме... |
27.05.2024 | Пакетная обработка данных на современных GPU | По большому счёту, самая первая и самая важная оптимизация, которую можно применить к любой современной системе машинного обучения, заключается в том, чтобы реализовать в этой системе пакетную обработку данных (batching). Для того чтобы пол... |
20.05.2024 | Заставляем машинное обучение делать «брррр» через понимание базовых принципов компьютерных систем | Итак, вы хотите улучшить эффективность работы своей модели глубокого обучения. Как подойти к такой задаче? Народ в таких случаях часто набрасывается на «сборную солянку» из всяких хитрых приёмов, которые, вроде бы, кому‑то когда‑то помогли,... |
06.05.2024 | Невероятно, но факт: умножение матриц на GPU идёт быстрее на «предсказуемых» данных | Великие умы обсуждают «флопсы» на ватт
Шёл 2022 год. Я обратил внимание на новый интересный проект CUTLASS, отличающийся очень высокой скоростью выполнения операций умножения матриц. Я взял большую задачу по умножению матриц — 8192 x 8192 x... |
30.04.2024 | Бэкдор в основной версии xz/liblzma, ведущий к компрометации SSH-сервера | В последние недели я, работая в системах с установленным дистрибутивом Debian Sid, столкнулся с несколькими странностями, связанными с liblzma (это — часть пакета xz). При входе в систему с использованием SSH очень сильно нагружался процесс... |
15.04.2024 | История терминала как инструмент продуктивности | Если вы достаточно часто работаете в командной оболочке/терминале — это значит, что со временем история команд станет вашим личным хранилищем знаний, вашим справочником по командам и по документации. Возможность эффективно пользоваться этим... |
18.03.2024 | Реальность обладает поразительным числом деталей | I.
Мой отец эмигрировал из Колумбии в Северную Америку, когда ему было 18. Сделал он это в поисках лучшей жизни. Для меня и моего брата это значило — проводить много времени на уличном холоде. Отец выбрал путь улучшения своей судьбы через у... |
11.03.2024 | Трансформеры, группы преобразований и self-attention | В подвижном мире развивающихся нейросетевых архитектур главную роль играет эффективность работы моделей. Тонкая настройка сетей под конкретные задачи предусматривает интеграцию в них априорных знаний. Делается это посредством стратегических... |
04.03.2024 | Азы больших языковых моделей и трансформеров: декодер | В этом материале мы поговорим об устройстве компонента‑декодера в системах машинного обучения, построенных по архитектуре «трансформер», уделив особое внимание отличию декодера от энкодера. Уникальной особенностью декодеров является то, что... |
26.02.2024 | Организация ML-монорепозитория с помощью Pants | Приходилось вам копипастить фрагменты вспомогательного кода между проектами, попадая в ситуацию, когда несколько версий одного и того же набора команд оказывались в разных репозиториях? Или, может, вам надо было делать pull‑запросы к десятк... |
19.02.2024 | Лосось и машина | Одно из самых увлекательных дел, которое счастливая случайность может подкинуть учёному‑информатику — это сложная социотехническая задача из области, переживающей процесс цифровой трансформации. В моём случае это была задача подсчёта рыб. Н... |
12.02.2024 | Использование Jupyter Notebook для разведочного анализа данных ⬝ Методические рекомендации | Блокноты Jupyter — это, уже довольно давно, один из самых неоднозначных инструментов в среде дата‑сайентистов. Одни яро критикуют Jupyter, другие горячо поддерживают этот проект. Но, тем не менее, многие согласятся с тем, что блокноты Jupyt... |
05.02.2024 | Оффлайновое использование Git | Некоторые компании, защищая свои системы от несанкционированного доступа, используют изолированные компьютерные сети, или полностью обходятся без сетей. Работа в таких системах может быть сопряжена со сложностями, но нельзя сказать, что в н... |
30.01.2024 | Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB | Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.
Раньше я никогда сам ... |
22.01.2024 | Как я за один заход хакнул половину американских сетей фастфуда | Консоль бодро оповестила меня о завершении работы скрипта. Его задача заключалась в поиске учётных данных для доступа к Firebase, которые лежали в открытом доступе и принадлежали одному из сотен недавно появившихся ИИ‑стартапов.
Скрипт шёл ... |
15.01.2024 | Аннотирование args и kwargs в Python | Когда я пытаюсь обойтись без *args и **kwargs в сигнатурах функций, это не всегда можно сделать, не вредя удобству использования API. Особенно — когда надо писать функции, которые обращаются к вспомогательным функциям с одинаковыми сигнатур... |
18.12.2023 | За кулисами публикации «24 часа невидимой эпидемии» | Сегодня я расскажу о том, как был подготовлен материал об одиночестве, «24 hours in an invisible epidemic», опубликованный на платформе Pudding.
Всё началось с моей одержимости материалами Американского обследования использования времени (A... |
11.12.2023 | Добавление собственных данных в LLM с помощью RAG | Этот материал посвящён тому, как добавлять собственные данные в предварительно обученные LLM (Large Language Model, большая языковая модель) с применением подхода, основанного на промптах, который называется RAG (Retrieval‑Augmented Generat... |
04.12.2023 | Абсолютный минимум об Unicode на 2023 год (всё ещё — никаких оправданий!) | Двадцать лет назад Джоэл Спольски написал:
Не существует такой штуки, как «обычный текст».
Если имеется строка, но неизвестно, какую кодировку символов она использует — смысла в этой строке нет. Больше нельзя спрятать голову в песок и притв... |
27.11.2023 | 16-, 8- и 4-битные форматы чисел с плавающей запятой | Уже лет 50, со времён выхода первого издания «Языка программирования Си» Кернигана и Ритчи, известно, что «числа с плавающей запятой» одинарной точности имеют размер 32 бита, а числа двойной точности — 64 бита. Существуют ещё и 80-битные чи... |
20.11.2023 | Две мощных возможности Python, упрощающие код и улучшающие его читабельность | Улучшите качество кода, украсив его оператором match и срезами объектов.
Python не случайно стал невероятно популярным в современной технической среде. Он, если сравнивать его с другими языками программирования, возможно, является самым удо... |
13.11.2023 | Исследование режима Copy-on-Write в pandas. Часть 3 | Появление в библиотеке pandas режима Copy‑on‑Write (CoW, копирование при записи) — это изменение, нарушающее обратную совместимость, которое окажет некоторое воздействие на существующий код, использующий pandas. Мы разберёмся с тем, как ада... |
07.11.2023 | Исследование режима Copy-on-Write в pandas. Часть 2 | В первом материале из этой серии была объяснена работа механизма Copy‑on‑Write (CoW, копирование при записи). Там были упомянуты некоторые ситуации, в которых при выполнении кода осуществляется копирование данных. В этой статье речь пойдёт ... |
30.10.2023 | Исследование режима Copy-on-Write в pandas. Часть 1 | Библиотека pandas 2.0 вышла в начале апреля, в ней появилось много улучшений нового режима Copy‑on‑Write (CoW, копирование при записи). Ожидается, что в pandas 3.0 режим CoW будет использоваться по умолчанию. Сейчас полный переход на копиро... |
23.10.2023 | «Да» — расписаниям, «нет» — спискам дел | Представьте, что вы купили новый телефон. Но, несмотря на то, что его только достали из коробки, ежедневно, в конце дня, его операционная система даёт катастрофический сбой. Продолжали бы вы пользоваться таким вот дефектным телефоном? Нет, ... |
16.10.2023 | От теории к практике: создаём веб-приложение для решения задачи коммивояжёра | В таких сферах, как исследование операций (Operations Research) и наука о данных (Data Science) чрезвычайно актуально сближение теории и её практического применения в виде программных проектов. Теоретические выкладки формируют базу программ... |
10.10.2023 | Чем на самом деле занимается Chief Technical Officer? | В 2017 году я впервые почувствовал себя в роли CTO (Chief Technical Officer, технический директор). Я присоединился к маленькому стартапу в роли разработчика‑сеньора, и не успел опомниться, как оказалось, что я держу в руках бразды правлени... |
02.10.2023 | Minetester: полностью открытое окружение для обучения с подкреплением, построенное на основе Minetest | В последние несколько месяцев наблюдаются значительные успехи в разработке языковых моделей, особенно — в сфере частного бизнеса. В прошлом году вышло несколько подобных проектов, основанных на Minecraft. В частности — речь идёт о фреймворк... |
18.09.2023 | Революция в оптимизаторах: DeepMind использует большие языковые модели в роли интеллектуальных оптимизаторов | В новой публикации «Large Language Models as Optimizers» (Большие языковые модели в роли оптимизаторов) команда исследователей Google DeepMind представила инновационный метод оптимизации, названный «оптимизация через промпты» (Optimization ... |
12.09.2023 | Реверс-инжиниринг промптов for fun and (no) profit | Этот материал посвящён взлому промптов Notion AI, семи методикам реверс‑инжиниринга промптов и рассказу о том, почему все ошибаются в своих мнениях о промпт‑инъекциях (prompt injection).
Вчера я получил доступ к публичной альфа‑версии Notio... |
28.08.2023 | Архетипы программных архитекторов. Часть 2 | Привет Хабр! Сегодня публикуем вторую часть материала об архетипах программных архитекторов. Если пропустили, то вот первая часть.3. Архитектор, или инженер уровня Staff+?
На ресурсе «The Pragmatic Engineer» редко используется термин «архит... |
14.08.2023 | Что LLM знают о лингвистике? Это зависит от того, какие вопросы им задают | Развитие больших языковых моделей (Large Language Model, LLM) привело к смене парадигмы в сфере обработки естественного языка (Natural Language Processing, NLP). LLM, обученные на огромных объёмах текста, взятого из интернета, могут осваива... |
07.08.2023 | Brain2Music: как нейроcеть распознает мелодии по МРТ мозга | Музыка — это универсальный язык, для которого нет границ. Стремительный прогресс больших языковых моделей (Large Language Model, LLM) привёл к тому, что нейроучёные продемонстрировали острый интерес к исследованию представления музыки в чел... |
31.07.2023 | Протоколы в Python | В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyp... |
24.07.2023 | Качественный набор данных от Microsoft для обучения компактных, но мощных языковых моделей, генерирующих код | Обучение больших нейронных сетей — это искусство. В сфере ИИ уже давно известны следующие два факта. Во-первых — высококачественные учебные данные оказывают значительное влияние на улучшение результатов работы больших моделей. Во-вторых — п... |
17.07.2023 | Визуализация реальных масштабов проклятия размерности | Представьте себе набор данных, состоящий из некоторого количества наблюдений. У каждого наблюдения имеется N признаков. Если преобразовать все эти признаки в их числовое представление, то можно будет сказать, что каждое из наблюдений — это ... |
10.07.2023 | GPT и человеческая психология | Генеративные текстовые модели, например — ChatGPT и GPT-4, кардинально изменили всё то, что происходит в области искусственного интеллекта (ИИ, AI, Artificial Intelligence).
GPT‑модели (Generative Pre‑trained Transformer, генеративный предо... |
03.07.2023 | Развлечения с хеш-коллизиями | Мой друг и коллега по цеху, блоггер Сэм, недавно опубликовал своё третье иллюстрированное руководство, темой которого стало хеширование. Нет острой необходимости читать его руководство перед прочтением моей статьи, но я очень рекомендую вам... |
19.06.2023 | Эксклюзив: детализация уровней сотрудников Shopify. Часть 2 | Публикуем вторую часть материала о новшествах в системе управления персоналом Shopify.
Читать первую часть5. Заработная плата, уровни и релокация
Shopify определяет уровень заработной платы, предлагаемой в компании, покупая данные у специал... |
13.06.2023 | Эксклюзив: детализация уровней сотрудников Shopify. Часть 1 | Shopify — это один из крупнейших конкурентов Amazon в сфере онлайн‑ритейла. В компании работает около 10 000 человек. Shopify, в отличие от Amazon — централизованной торговой площадки, предлагает коммерческим структурам платформу для создан... |
05.06.2023 | Что внутри черного ящика: понимаем работу ML-модели с помощью SHAP | Значения Шепли применяются в экономике, а точнее — в теории кооперативных игр. Такие значения назначаются игрокам сообразно их вкладу в игру. В сфере машинного обучения идея использования значений Шепли нашла отражение во фреймворке SHAP (S... |
29.05.2023 | Идеальный препроцессинговый пайплайн для NLP-моделей | Если вы работали над проектом по реферированию текстов, то вы могли заметить сложность получения тех результатов, которые ожидалось получить. Если у вас имелись представления относительно того, как должен работать некий алгоритм, какие пред... |
22.05.2023 | Поймай меня, если сможешь: руководство по обработке исключений в Python | Люди, которые пишут код, часто воспринимают работу с исключениями как необходимое зло. Но освоение системы обработки исключений в Python способно повысить профессиональный уровень программиста, сделать его эффективнее. В этом материале я ра... |
15.05.2023 | Scrum не нужен. Нужно лишь правильно использовать Kanban | Почему вы выбрали фреймворк Scrum, а не метод управления проектами Kanban? Не можете ответить? Значит — лично вы Scrum и не выбирали. Кто-то сделал это за вас.
Даже в тех редких случаях, когда люди способны ответить на вышеприведённый вопро... |
24.04.2023 | StackLLaMA: практическое руководство по обучению LLaMA с помощью RLHF | ChatGPT, GPT-4 и Claude — это мощные языковые модели, которые дообучают, используя метод, который называется «обучение с подкреплением на основе отзывов людей» (Reinforcement Learning from Human Feedback, RLHF). Благодаря этому такие модели... |
17.04.2023 | Осваивают ли LLM модели мира, или лишь поверхностную статистику? | Большие языковые модели (Large Language Model, LLM) сейчас у всех на слуху. Они привлекают внимание общественности своей, казалось бы, впечатляющей возможностью — составлять осмысленные тексты в ответ на запрос пользователя (иногда такие за... |
10.04.2023 | Ускорение работы моделей Stable Diffusion на процессорах Intel | Недавно мы рассказывали о последнем поколении процессоров Intel Xeon (кодовое название Sapphire Rapids). Мы говорили об их новых аппаратных возможностях, ориентированных на ускорение задач глубокого обучения, разбирались с тем, как использо... |
03.04.2023 | Модульное глубокое обучение | В этом материале приведён краткий обзор использования модульного подхода в задачах глубокого обучения. Более детальный разбор этой темы вы можете найти здесь. Если вас интересует модульный подход к тонкой настройке (дообучению) моделей обра... |
27.03.2023 | Учимся совершать правильные ошибки — краткое сравнение человеческого восприятия и мультимодальных языковых моделей... | Представьте, что вы, совершенно один, отдыхаете в своём маленьком бревенчатом домике в лесу. Когда вы, декабрьским вечером, начинаете читать уже вторую книгу из списка «Книги недели», вы слышите поблизости чьи-то тяжёлые шаги. Вы бросаетесь... |
20.03.2023 | Самая маленькая хеш-таблица в мире | 1 декабря я в очередной раз поучаствовал в Advent of Code, написав программу на Rust. Если интересно — код можно найти на GitHub. Тут мне хотелось бы рассказать о моём решении задачи, предлагавшейся во 2 день мероприятия, так как это решени... |
13.03.2023 | Как нанять талантливого программиста и никому не навредить | Этот материал посвящён формированию культуры технических собеседований, проводимых с учётом потребностей людей и с уважением к ним.
Тимлид проводит ревью решения задачи инверсии бинарного дерева, которое собеседуемый сделал на бумаге (источ... |
20.02.2023 | Полное руководство по модулю asyncio в Python. Часть 9 | Публикуем девятую, заключительную часть (1, 2, 3, 4, 5, 6, 7, 8) перевода руководства по модулю asyncio в Python. Здесь вы найдёте разделы исходного материала с 23 по 26.23. Часто задаваемые вопросы об asyncio
В этом разделе приведены ответ... |
13.02.2023 | Бухучёт для программистов | Любому образованному человеку непременно нужно иметь общее представление о бухгалтерском учёте. Так же, как и математика, естественные науки, программирование, музыка, литература, история, да и много чего ещё, бухучёт — это одна из тех сфер... |
06.02.2023 | Полное руководство по модулю asyncio в Python. Часть 8 | Перед вами восьмая часть (1, 2, 3, 4, 5, 6, 7) перевода руководства по модулю asyncio в Python. Здесь вы найдёте разделы исходного материала с 20 по 22.20. Неблокирующие потоки
Весьма полезной особенностью asyncio можно назвать возможность ... |
30.01.2023 | Пара HTTP-заголовков, о которых, похоже, не знают разработчики | Вот какое дело: как показывают мои изыскания, большинство веб-разработчиков поразительно мало знают об HTTP-заголовках или, в целом, о стандарте HTTP. Я имею в виду, что я понимаю то, что во многих университетах и школах, вероятно, этому не... |
23.01.2023 | Полное руководство по модулю asyncio в Python. Часть 7 | Публикуем седьмую часть (1, 2, 3, 4, 5, 6) перевода руководства по модулю asyncio в Python. Здесь представлены разделы исходного материала с 17 по 19.17. Асинхронные менеджеры контекста
Менеджер контекста в Python — это сущность, которая да... |
16.01.2023 | Полное руководство по модулю asyncio в Python. Часть 6 | Привет, Хабр! Перед вами шестая часть (1, 2, 3, 4, 5) перевода руководства по модулю asyncio в Python. Здесь представлены 14-16 разделы исходного материала.14. Запуск блокирующих задач в asyncio-программах
Блокирующая задача — это такая зад... |
09.01.2023 | Полное руководство по модулю asyncio в Python. Часть 5 | Привет, Хабр! Публикуем пятую часть (первая, вторая, третья, четвёртая) перевода руководства по модулю asyncio в Python. Здесь представлены разделы оригинала с №10 по №13.10. Конкурентный запуск нескольких корутин
Сила asyncio в том, что эт... |
29.12.2022 | Полное руководство по модулю asyncio в Python. Часть 4 | Сегодня, в четвёртой части (первая, вторая, третья) перевода учебного руководства по модулю asyncio в Python, представляем вашему вниманию разделы оригинала №8 и 9.8. Работа с задачами и получение сведений о них
Задачи — это основная валюта... |
26.12.2022 | Стратегии роста Notion. Часть 2 | Примечание Wunder Fund: мы very early adopters Ноушена и большие его фанаты. Поэтому решили перевести нетипичную для нас статью о том, как он создавался, как рос, как развивалась его стратегия. В статье есть ряд интересных мыслей про развит... |
14.12.2022 | Стратегии роста Notion. Часть 1 | Примечание Wunder Fund: мы very early adopters Ноушена и большие его фанаты. Поэтому решили перевести нетипичную для нас статью о том, как он создавался, как рос, как развивалась его стратегия. В статье есть ряд интересных мыслей про развит... |
05.12.2022 | Полное руководство по модулю asyncio в Python. Часть 3 | Сегодня публикуем третью часть (первая, вторая) перевода учебного руководства по модулю asyncio в Python. Здесь представлены разделы оригинала №5, 6 и 7.5. Определение, создание и запуск корутин
В Python-программах можно определять корутины... |
28.11.2022 | Полное руководство по модулю asyncio в Python. Часть 2 | Публикуем вторую часть руководства по модулю asyncio в Python, в которой представлены разделы оригинала №3 и 4. Читать головокружительную первую часть.3. Когда стоит использовать модуль asyncio
Если описать модуль asyncio несколькими словам... |
21.11.2022 | Полное руководство по модулю asyncio в Python. Часть 1 | Python-модуль asyncio позволяет заниматься асинхронным программированием с применением конкурентного выполнения кода, основанного на корутинах. Хотя этот модуль имеется в Python уже много лет, он остаётся одним из самых интересных механизмо... |
14.11.2022 | К вопросу о современном восприятии методологии 12 Factor App | Методология Twelve-Factor App (Приложение двенадцати факторов), которую создал сооснователь платформы Heroku Адам Уиггинс, направлена на разработку SaaS-приложений. Документ, описывающий эту методологию, включает в себя множество идей, прим... |
07.11.2022 | Стоит ли использовать кастомные исключения в Python | В Python имеется так много встроенных исключений, что программисты редко нуждаются в создании и использовании пользовательских исключений. Или это не так?
Какие исключения стоит применять — пользовательские или встроенные? Это, на самом дел... |
31.10.2022 | Историческое решение Netflix — введение карьерных уровней для инженеров-программистов | Подошёл к концу 25-летний период, когда в компании Netflix придерживались подхода, в соответствии с которым все инженеры-программисты находились на одном карьерном уровне. Что можно сказать о новой системе карьерных уровней Netflix? Как их ... |
25.10.2022 | Как создать оптимизатор заголовков блог-постов с помощью GPT-3 и данных с Hacker News | Система, основанная на GPT-3, сообщает о том, что заголовок для этой статьи (How to Create a Blog Post Title Optimizer with GPT-3 and Hacker News Data) очень плох.20,8% — это достаточно близко
Я, с объективной точки зрения, очень плохо умею... |
17.10.2022 | Исчерпывающее руководство по множествам в Python | Класс set (множество) — это одна из ключевых структур данных в Python. Она представляет собой неупорядоченную коллекцию уникальных элементов. Класс set, в некоторой степени, соответствует математическому множеству. Многие широко используемы... |
10.10.2022 | Рассуждения об asyncio.Semaphore | В Кремниевой долине есть очень особенный ресторан фаст-фуда, который всегда открыт. Там имеется один столик, за ним может разместиться лишь один посетитель, которому дадут совершенно фантастический гамбургер. Когда туда приходишь — ждёшь до... |
03.10.2022 | SQL и NoSQL. Правда ли одно лучше другого? | Базы данных (БД) существуют с первых дней программирования, а появились они ещё раньше. Это — неотъемлемые части любых приложений. Хорошо спроектированная БД — это один из важнейших компонентов, влияющих на производительность программных пр... |
26.09.2022 | Taichi и 100-кратное ускорение Python-кода | Python стал самым популярным языком во многих быстроразвивающихся областях, таких, как глубокое обучение и различные направления анализа и обработки данных. Но при этом за удобство работы с Python-кодом, за высокий уровень его читабельности... |
19.09.2022 | Списковые включения в Python мощнее, чем можно подумать | В Python списковые включения (и генераторы списков) — замечательные механизмы, способные серьёзно упрощать программный код. Правда, чаще всего их используют в форме, предусматривающей наличие единственного цикла for и, возможно, одного усло... |
12.09.2022 | Подтесты в Python | Недавно я сделал опрометчивый твит, в котором намекнул на то, что у меня имеется глубоко продуманное мнение по одному важному вопросу. Я написал, что пакет pytest-subtests достоин того, чтобы им пользовалось бы больше программистов. Я даже ... |
29.08.2022 | Логирование в Python: руководство разработчика | Сталкивались ли вы с трудностями при отладке Python-кода? Если это так — то изучение того, как наладить логирование (журналирование, logging) в Python, способно помочь вам упростить задачи, решаемые при отладке.
Если вы — новичок, то вы, на... |
22.08.2022 | 4 анти-паттерна pandas и способы борьбы с ними | Pandas — это мощная библиотека для анализа данных, API которой обладает широкими функциональными возможностями. Этот API позволяет решить любую задачу, связанную с обработкой данных, несколькими способами. Некоторые из подходов к решению за... |
15.08.2022 | Эффективное использование any и all в Python | Вот вам задача: надо проверить, входит ли число 200 миллионов в диапазон от 0 до 1 миллиарда. Знаю, что на Python её решение выглядит до крайности примитивно — достаточно воспользоваться функцией any и списковым включением:
def find_200_mil... |
08.08.2022 | Устаревшие Python-библиотеки, с которыми пора попрощаться | В Python, с каждым релизом, добавляют новые модули, появляются новые и улучшенные способы решения различных задач. Все мы привыкли пользоваться старыми добрыми Python-библиотеками, привыкли к определённым способам работы. Но пришло время об... |
01.08.2022 | Дизерпанк — статья о дизеринге изображений, которую мне хотелось бы прочитать | Мне всегда нравилась визуальная эстетика дизеринга (dithering, псевдотонирование, псевдосмешение цветов), но я не знал о том, как он применяется. Поэтому я провёл кое-какие изыскания. Эта статья может содержать отголоски ностальгии, но в не... |
25.07.2022 | Как организовать код в Python-проекте, чтобы потом не пожалеть | Каждая минута, потраченная на организацию своей деятельности, экономит вам целый час.
Бенджамин Франклин
Python отличается от таких языков программирования, как C# или Java, заставляющих программиста давать классам имена, соответствующие им... |
18.07.2022 | Как работать с датами в pandas | Библиотека Pandas — это весьма эффективный инструмент для обработки данных, представляющих собой временные ряды. На самом деле, эта библиотека была создана Уэсом МакКинни для работы с финансовыми данными, которые состоят, главным образом, и... |
04.07.2022 | F-строки в Python мощнее, чем можно подумать | Форматированные строковые литералы, которые ещё называют f-строками (f-strings), появились довольно давно, в Python 3.6. Поэтому все знают о том, что это такое, и о том, как ими пользоваться. Правда, f-строки обладают кое-какими полезными в... |
27.06.2022 | Обучение с подкреплением: практические рекомендации по обучению сетей Deep Q | В предыдущем материале из этой серии мы рассказали о сетях Deep Q (Deep Q Network, DQN) и написали алгоритм их обучения на псевдокоде. Хотя такие сети, в принципе, работоспособны, практическая реализация алгоритмов обучения с подкреплением ... |
21.06.2022 | Обучение с подкреплением: сети Deep Q | В предыдущих материалах из этой серии мы рассказали о том, что такое обучение с подкреплением (Reinforcement learning, RL), поговорили о том, почему это важно, разобрались с математическим аппаратом, используемым для создания RL-агентов.
На... |
14.06.2022 | Обучение с подкреплением: математический аппарат | В предыдущем материале из этой серии мы простыми словами рассказали о том, что такое обучение с подкреплением (Reinforcement learning, RL). Там мы, на интуитивном уровне, разобрались с тем, как работают механизмы RL, поговорили о том, как о... |