Как стать автором
Обновить
4
0
Anton Berdnikov @agratoth

Python, Go, React

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

Атрибут или Dunder-метод slots в Python. Что нужно о нём знать?

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

Всем привет! Меня зовут Дима. Я являюсь Backend Python Developer'ом. Сегодня расскажу Вам про «волшебный» инструмент __slots__ в Python.

Читать далее

Boxplot, он же ящик с усами

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

Представьте, что вам нужно быстро сравнить распределения зарплат сотрудников разных отделов или оценить разброс результатов эксперимента. В таких ситуациях отличным выбором будет boxplot, он же “ящик с усами” – эффективный инструмент для выявления ключевых характеристик распределения, позволяющий быстро оценить медиану, разброс данных и обнаружить выбросы.

В этой статье мы подробно разберем, что такое boxplot и почему его называют “ящиком с усами”.

Читать далее

Сборка проектов Си и Си++: от простого к сложному. Часть II. Сборщики

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

Продолжаю тему о сборке проектов на Си и Си++, первая часть которой размещена здесь.

Рецепты сборки по правилам хорошего тона должны поставляться с проектом и очень желательно, чтобы они не были привязаны к конкретной ОС или хотя бы к конкретному дистрибутиву Linux, используя специфические команды вроде apt-get, yum, emerge. Если это небольшой пет-проект выходного дня, то, конечно, в качестве рецепта сгодится и bash-скрипт. Пользователи адаптируют. Но если к проекту подключаются другие разработчики, то лучше потратить время на автоматизацию сборки, чтобы не терять его оптом в будущем. В этой части речь пойдёт об инструментах, которые используются для автоматизации процесса сборки программного обеспечения.
Читать дальше →

Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки

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

Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы.

Вот сегодня и расскажу о том, какие бывают способы борьбы с зависимостями и сборки проекта из множества файлов на Си++. Заодно те, кто не любят Си++, смогут порадоваться «прелестям» этого процесса. И хоть тема очень важная для программистов, но я обратил внимание, что даже многолетний опыт не гарантирует понимания этих процессов. Но сразу предупреждаю — история длинная даже с учетом всех попыток не убегать на смежные темы.
Читать дальше →

Коротко про kube-scheduler в Kubernetes

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

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

Сегодня рассмотрим такой компонент в Kubernetes, как kube‑scheduler — это компонент control plane в Kubernetes, отвечающий за назначение подов на узлы.

Читать далее

Пять нужных кастом-хуков для React

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

React предоставляет программисту прекрасный базовый набор хуков и с каждой версией их количество и функционал увеличивается.

Трудно представить код современного React-приложения без таких функций как useState, useEffect, useRef и так далее.

Однако, в повседневной жизни мы часто решаем рутинные задачи, многие из которых могут быть автоматизированы.

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

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

Ниже мы рассмотрим примеры некоторых из них.  

Читать далее

Как работает HTTP/2 и как использовать его в Go

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

HTTP/2 – это значительное обновление по сравнению с HTTP/1.1, решающее его ключевые ограничения, такие как блокировка Head-of-Line (HoL) и неэффективность многократных соединений. В этой статье мы разберёмся, почему HTTP/2 стал стандартом, как он устроен и чем отличается от предыдущей версии протокола. Мы рассмотрим ключевые концепции HTTP/2: мультиплексирование, сжатие заголовков HPACK, бинарный формат фреймов и серверный push.

Во второй части статьи мы покажем, как включить HTTP/2 в Go-приложениях. Вы узнаете, как правильно настроить HTTP-сервер с поддержкой TLS и ALPN, какие пакеты использовать и какие нюансы учитывать при разработке. Также мы обсудим практические аспекты работы с HTTP/2, возможные проблемы и пути их решения.

Читать далее

Централизация логирования микросервисов с Graylog

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

Трассировка и анализ ошибок в микросервисной архитектуре без средств централизации логирования обычно причиняет неудобства, поскольку для понимания “что и на каком микросервисе умерло” приходится обходить микросервисы по очереди, сверять и сопоставлять данные в логах. В данной статье рассматривается централизация логирования с помощью Graylog, с примерами кода на Python.

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

Читать далее

Экономическая система мира Гарри Поттера

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

*Империо! Дочитайте этот текст до конца!* 

После анонса сериала от HBO по всем книгам саги мы, старожилы мира Гарри Поттера, снова можем без стеснения обсуждать тонкости сюжета. Возможно, в новом сериале нам раскроют больше деталей об устройстве вселенной волшебников, чем это сделала Джоан Роулинг. 

Когда читаешь книгу, особенно будучи ребенком без жизненного опыта и образования, не всегда задумываешься над второстепенными деталями. Кажется, что мир волшебников, если на секунду забыть про магию, не сильно отличается от нашего: есть магазины, товары, услуги, деньги и банк, где они хранятся. Есть даже законотворческий орган — Министерство магии. Но когда, повзрослев, начинаешь задумываться об экономической системе магического мира, сразу появляется куча вопросов. И чем дальше думаешь, тем их больше. Не претендуя на лавры Юдковского, попробуем разобраться, как работает экономика в мире Гарри Поттера, чем отличается от магловской, и немного пофантазируем на тему деталей, которые в книгах Роулинг остались за кадром.

Читать далее

Дом, милый дом: нюансы работы с ClickHouse. Часть 2, репликация

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

Всем привет, меня зовут Пётр. В первой части этого цикла статей мы взглянули на некоторые базовые концепции ClickHouse. В этой же статье продолжим изучать тонкости работы с этой колоночной базой данных и подробно рассмотрим такой аспект как репликация. А ещё разберёмся с сервисами координации Zookeeper и ClickHouse Keeper.

Давайте разбираться!

Пайплайны в GitLab для микросервисов

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

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

Начнем с основ на примере монолитного приложения, а потом усложним их микросервисами и постараемся избавиться от однотипного кода. А еще…
Читать дальше →

Асинхронный веб: WebSocket, Server-Sent Events, Long Polling и Short Polling

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

Веб-разработка часто требует реализации механизмов обновления контента на странице в реальном времени. Существуют различные сценарии, где это необходимо, например, отображение прогресса выполнения тяжелых задач на бекенде, обновление каких-либо часто меняющихся данных, будь то курсы валют или мониторинг какой-то активности, чаты, различные уведомления. Эти сценарии объединяет одна общая особенность: источник события необходимости обновления данных находится не на клиентской стороне, поэтому мы хотим получать события с бекенда. В данной статье мы рассмотрим четыре популярных подхода к реализации этой функциональности: WebSocket, Server-Sent Events (SSE), Long Polling и Short Polling.
Мы проанализируем каждый метод, выявим их плюсы, минусы и сложность реализации.

Читать далее

Архитектурный паттерн Dependency Injection в React-приложении

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

Расшифровка доклада Сергея Нестерова с конференции FrontendLive 2020.

Привет! Меня зовут Сергей, уже больше двух лет я работаю в группе компаний Тинькофф. Моя команда занимается разработкой системы для анализа качества обслуживания клиентов в Тинькофф, и, как вы, наверное, догадались, мы используем React в своем приложении. Не так давно мы внедрили в свой проект архитектурный паттерн Dependency Injection совместно с IoC-контейнерами. Сделали мы это не просто так: это позволило нам решить ряд проблем, которые тормозили разработку нового функционала.

Читать далее

Python — Дескрипторы (Descriptors)

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

Если обратиться к документации, то дескриптор — механизм, который позволяет объектам настраивать поиск, хранение и удаление атрибутов.

Дескрипторы используются в классах, выступая в роли атрибутов класса(не экземпляра).

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

Читать далее

Как запустить WebRTC на сервере, или как я пилю вебкам

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

Всем привет!

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

ДИСКЛЕЙМЕР: это не бескорыстный акт передачи знаний с моей стороны. Я пытаюсь найти инвестиции для своего проекта и создал чат в тг, где буду постить обновления и какие-то мысли касательно его запуска. Так что если интересно, то подписывайтесь, а еще можете поделиться ссылкой с теми, у кого есть лишние бабки =)

Предыстория

Значит решил я создать сервис для одиноких мужчин, где они могут пообщаться с прекрасными дамами, aka вебкам. Соответственно встал вопрос, как организовать видеосвязь в браузере. Обычно для этого используется WebRTC, эта технология позволяет установить p2p соединение между браузерами для передачи видео, звука и прочих данных в реальном времени с минимальной задержкой. Однако была одна проблема: что делать, если приходит жалоба от пользователя, что ему показали не то (или не показали), что он хотел. Поскольку это p2p соединение напрямую между пользователями, у меня как у владельца сервиса нет возможности провалидировать жалобу. Первое, что пришло в голову это вместо WebRTC использовать MediaRecorder API для записи видео небольшими кусочками и отправки их по вебсокету через сервер, попутно сохраняя. Я набросал прототип и столкнулся с тем, что если получатель пропустил первый пакет (там где есть метаданные), то видео у него не воспроизводится. Пришлось поиском определенного набора байт в первом пакете вычленять эти самые метаданные и сохранять их отдельно для отправки первым сообщением только что подключившемуся получателю, и это даже сработало. Вторая проблема этого решения - это задержка в пару секунд, и это только в локальной сети, что приемлемо для односторонней связи, но для двусторонней уже сомнительно. И третья проблема это то что видео у получателя со временем все больше и больше отстает, и нужно регулярно проматывать видео ближе к концу. Костыльность такого решения меня не устраивала, и я решил использовать WebRTC для связи собеседников и параллельно использовать MediaRecorder для отправки записи от модели к серверу. Некоторое время оно так работало, пока я пилил другие фичи, но неэлегантность этого решения все еще не давала мне покоя, т. к. оно повышает требования к интернет соединению модели.

Читать далее

Книга: «Рецепты Python. Коллекция лучших техник программирования»

Время на прочтение15 мин
Количество просмотров15K
image Привет, Хаброжители!

В «Рецептах Python» используется простой, но эффективный метод освоения 63-х базовых навыков программирования на Python. Сначала формулируется вопрос, например «Как найти элементы в последовательности?» Затем приводится базовое решение на чистом понятном коде. Далее исследуются другие интересные подходы, такие как поиск подстрок или пользовательские классы. Перед переходом к следующему вопросу полученные навыки закрепляются с помощью решения задач.

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

Как работает multiprocessing в Python под капотом

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров15K

Я довольно давно пишу на Python и во многих проектах использовал multiprocessing — пакет стандартной библиотеки языка Python, который предоставляет интерфейс для работы с процессами, очередями, пулами процессов и многими другими удобными инструментами для параллельного программирования. В какой-то момент я понял, что мне не хватает более детального понимания работы этой библиотеки.

Мне захотелось залезть в исходники multiprocessing, разобраться и заодно написать статью. Данная статья в основном рассчитана на новичков в Python и тех, кто хочет подробнее разобраться в том, как именно создаются процессы и пулы в Python и погрузиться в детали реализации.

Читать далее

Септик и автономная канализация. Часть 1. Основы

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

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

Погрузиться в чтение

Как реагировать на то, что вы не единственный (работодатель)?

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

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

Я постоянно учусь руководству и был лидером более сорока лет, в том числе работал вице-президентом отдела HR в Microsoft. Момент возникновения необходимости работы из дома был удивительным временем, потому что дал мне возможность увидеть страх на лицах менеджеров: они внезапно потеряли тот самый контроль, которым жили.

Менеджеры, потерявшие контроль


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

Отсутствие контроля повергло менеджеров в ужас. Они рассказывали становившиеся виральными истории о том, как их подчинённые тратили время на видеоигры, работу на пляже и, что самое ужасное — на две работы на полную ставку.

Осенью 2022 года многие СМИ писали поразительные истории о программистах из Кремниевой долины, зарабатывавших больше полумиллиона долларов на нескольких работах с полной ставкой — они жонглировали Zoom-созвонами и множеством дедлайнов в своём основном офисе, чтобы «обмануть» систему.

Очевидно, менеджеров коробило то, что эти сотрудники оставались безнаказанными.
Читать дальше →

Прикладное терраформирование или как затратив 1 кВт получить 1.5 МВт

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

— А почему Белокуриху называют курортом?

— Ну как же, у нас тут природная аномалия, зимой вокруг — 40°С, а у нас — 20°С!

Подробнее ...

Информация

В рейтинге
Не участвует
Откуда
Тольятти, Самарская обл., Россия
Дата рождения
Зарегистрирован
Активность