Как стать автором
Обновить
3
0
Дмитрий Брагин @Bragaman

Backend разработчик

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

Как работает видеокодек. Часть 1. Основы

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

Вторая часть: Принципы работы видеокодека




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

Если рассматривать итоговый цвет как комбинацию т.н. основных цветов (красного, зеленого и синего), в нашей трёхмерной матрице определяем три плоскости: первая для красного цвета, вторая для зеленого и последняя для синего.
3D матрица RGB

Будем называть каждую точку в этой матрице пикселем (элементом изображения). Каждый пиксель содержит информацию об интенсивности (обычно в виде числового значение) каждого цвета. Например, красный пиксель означает, что в нём 0 зеленого цвета, 0 синего и максимум красного. Пиксель розового цвета может быть сформирован с помощью комбинации трех цветов. Используя числовой диапазон от 0 до 255, розовый пиксель определяется как Красный = 255, Зелёный = 192 и Синий = 203.
Всего голосов 58: ↑58 и ↓0+58
Комментарии13

Почему Вы должны попробовать FastAPI?

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

image Лого взято из Github репозитория FastAPI


FastAPI — относительно новый веб-фреймворк, написанный на языке программирования Python для создания REST (а если сильно постараться то и GraphQL) API, основанный на новых возможностях Python 3.6+, таких как: подсказки типов (type-hints), нативная асинхронность (asyncio). Помимо всего прочего, FastAPI плотно интегрируется с OpenAPI-schema и автоматически генерирует документацию для вашего API посредством Swagger и ReDoc


FastAPI построен на базе Starlette и Pydantic.
StarletteASGI микро-фреймворк для написания веб-приложений.
Pydantic — библиотека для парсинга и валидации данных основанная на Python type-hints.

Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии50

Планирование в Go: Часть I — Планировщик ОС

Время на прочтение10 мин
Количество просмотров28K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Scheduling In Go: Part I — OS Scheduler» автора Билла Кеннеди, о том, как работает внутренний планировщик Go.

Это первый пост в серии из трех частей, который даст представление о механике и семантике, лежащей в основе планировщика в Go. Этот пост посвящен планировщику операционной системы. Начнем!

Внутренняя архитектура планировщика Go позволяет вашим многопоточным программам быть более эффективными и производительными. Важно иметь общее понимание того, как работают планировщики ОС и Go для правильного проектирования многопоточного программного обеспечения. Я опишу достаточно деталей, чтобы вы могли наглядно представить, как все работает, чтобы на практике принимать лучшие решения.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии9

Rust для веб-разработчика — быстрый старт и стремительный полет

Время на прочтение21 мин
Количество просмотров28K
Всем привет! Сегодня хочу поделиться опытом изучения языка и быстрой реализации высоконагруженного сетевого проекта, использующего так популярные и востребованные сейчас неблокирующие асинхронные сетевые соединения, на новом, красивом, элегантном и очень эффективном языке Rust.
Особый упор в посте сделаю на быстрое и ясное объяснение возможностей языка и платформы специалистам, имеющим большой опыт в веб-разработке, ибо сам таким и являюсь. Существует заблуждение, что кривая вхождения в Rust — очень-очень крутая. Но я покажу, что это далеко не так. Наливаем кофе и погнали!
Читать дальше →
Всего голосов 76: ↑55 и ↓21+34
Комментарии172

Как два капитана стали генералами: белым и красным

Время на прочтение4 мин
Количество просмотров34K
Однажды в самом конце XIX века на дальней и дикой окраине Империи служили два лихих офицера.

Оба они носили одно и то же звание — «капитан» и оба сами выбрали службу в Туркестане после окончания Академии Генерального штаба.

И это все, что у них было общего.

Первый был сама интеллигентность: он пришел в армию после математического факультета Санкт-Петербургского университета и факультативного обучения в консерватории, где пел вместе с Собиновым.

image

Второй был классическим «кухаркиным сыном»: выросший в захолустье будущего Восточного Казахстана сын казака и крещеной калмычки едва не завалил поступление в Академию Генштаба из-за незнания иностранных языков — ну мало там было носителей европейских языков.

image

Оба быстро стали активными участниками Большой Игры — многолетнего соперничества Британии и России в Средней Азии, и считались самыми перспективными среди молодого поколения Игроков.
Читать дальше →
Всего голосов 100: ↑67 и ↓33+34
Комментарии67

Почему надо создавать модули для nginx

Время на прочтение15 мин
Количество просмотров14K
Nginx — это веб-сервер, который решает десятки бизнес-задач, гибко настраивается, масштабируется и работает почти на всех ОС и платформах. Список функций, возможностей и решаемых проблем из коробки можно расписать в небольшой брошюре. Но порой, ряд бизнес-задач можно решить, только разработав собственные модули для nginx. Это модули, которые ориентированы на бизнес и содержат некоторую бизнес-логику, а не только обобщенное системное решение.



Вообще все в nginx — это модули, которые когда-то кем-то были написаны. Поэтому писать модули под nginx не только можно, но и нужно. Когда это необходимо делать и зачем, расскажет Василий Сошников (dedokOne) на примере нескольких кейсов.

Поговорим о причинах, которые побуждают писать модули на C, об архитектуре и ядре nginx, анатомии HTTP-модулей, о C-модулях, NJS, Lua и nginx.conf. Это важно знать не только тем, кто разрабатывает под nginx, но также тем, кто использует nginx-конфиги, Lua или другой язык внутри nginx.

Примечание: статья написана на основе доклада Василия Сошникова. Доклад постоянно модернизируется и обновляется. Информация в материале довольно техническая и, чтобы извлечь максимум пользы, читателям необходимо иметь опыт работы с кодом nginx на среднем уровне и выше.
Всего голосов 50: ↑46 и ↓4+42
Комментарии9

Права в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Время на прочтение21 мин
Количество просмотров540K
Всем привет. Это перевод статьи из книги RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 and EX300.

От себя: Надеюсь статья будет полезна не только начинающим, но и поможет более опытным администраторам упорядочить свои знания.

Итак, поехали.

image
Читать дальше →
Всего голосов 63: ↑57 и ↓6+51
Комментарии32

Что почитать проектному менеджеру: книги про управление персоналом, soft skills и DevOps

Время на прочтение4 мин
Количество просмотров17K
Мы в «ИТ Гильдии» уделяем особое внимание вопросам управления проектами и помогаем другим компаниям внедрять инструменты, которые оптимизируют работу в IT-отделах.

Сегодня мы собрали несколько полезных книг для PM’ов. В подборку вошла литература, которую рекомендуют к прочтению в тематических тредах на Hacker News, Reddit и Quora.

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии1

HTTP-заголовки для ответственного разработчика

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

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

Разработчики соединяют людей.
Разработчики помогают людям.
Разработчики дают людям возможности.

Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
Читать дальше →
Всего голосов 92: ↑90 и ↓2+88
Комментарии64

Техносфера. Курс лекций «Управление IT-проектами и продуктом»

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


Недавно наш образовательный проект Техносфера выложил последние лекции из курса «Управление IT-проектами и продуктом». Вы получите знания в области управления продуктами и проектами на примере Mail.ru Group, поймёте роль менеджера продукта и проекта, узнаете о перспективах развития и особенностях управления продуктом и проектом в крупной компании. В курсе рассмотрены теория и практика по управлению продуктом и всем, что есть внутри (или рядом с ним): процессами, требованиями, метриками, сроками, запусками и, конечно, рассказывается про людей и как с ними общаться. Курс ведёт Дина Сидорова.
Всего голосов 25: ↑24 и ↓1+23
Комментарии2

Пишем простой NTP-клиент

Время на прочтение6 мин
Количество просмотров23K
Всем привет, сегодня напишем свой простенький NTP клиент. В основном, разговор зайдет о структуре пакета и способе обработки ответа с NTP сервера. Код будет написан на питоне, потому что, как мне кажется, лучшего языка для подобных вещей просто не найти. Знатоки обратят внимание на схожесть кода с кодом ntplib — я «вдохновлялся» именно им.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии14

Горящий дедлайн: как проджект-менеджеру не лишиться пальцев

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

Все знают, что такое дедлайн, но не все знают, как правильно его ставить. Для разговора о срыве дедлайна на проекте можно подобрать много красивых метафор. Юбицумэ — одна из таких. Это ритуальное отрезание фаланги пальца в Японии. В частности к юбицумэ прибегают, чтобы принести извинения перед руководителем или хозяином за оплошность. Если вы смотрели фильмы про якудза, то поняли, о чём речь.

Ритуал пошёл из среды бакуто — игроков в азартные игры, и рассматривался как адекватная замена выплате долга. Должник пускал в расход фалангу мизинца, и это осложняло его дальнейшую жизнь: он больше не мог надёжно держать меч и в бою сильнее зависел от своих компаньонов, в том числе от хозяина.

Неважно, в каком времени и месте ты живёшь и чем занимаешься — командные отношения должны быть крепкими, а сроки нужно соблюдать. Менеджеры студии Лайв Тайпинг хоть и не отрезают себе пальцы, но всё равно несут ответственность за данное клиенту слово. Опыт позволил мне сформулировать шесть ошибок, допустив которые, вы точно рискуете сдать работу не вовремя, и что делать, чтобы соблюдать дедлайны. Перестав допускать эти ошибки, вы заметите, как вырастет качество ваших проектов, сколько времени освободится на отдых и как улучшатся отношения между членами команды и с клиентом.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии11

Типичные ошибки при работе с PostgreSQL. Часть 1

Время на прочтение7 мин
Количество просмотров33K
Чуть более месяца назад в Москве состоялась крупнейшая конференция постгресового сообщества PGConf.Russia 2019, собравшая в МГУ свыше 700 человек. Мы решили выложить видео и расшифровку лучших докладов. Выступление Ивана Фролкова с разбором типичных ошибок при работе с PostgreSQL было отмечено лучшим на конференции, поэтому мы начнем с него.

Для удобства мы разбили расшифровку на две части. В этой статье речь пойдет о непоследовательном именовании, о constraints, о том, где лучше сосредоточить логику — в базе или в приложении. Во второй части будут разобраны обработка ошибок, конкурентный доступ, неотменяемые операции, CTE и JSON.



В нашей компании я занимаюсь поддержкой клиентов по вопросам, связанным с приложениями, то есть помогаю в случаях проблем с соединениями, с оптимизацией запросов и прочими подобными вещами. Насмотрелся я приложений самых разных. Чего я только не видел! Может быть даже больше, чем хотелось бы. Часть из того, что я буду рассказывать, относится не только к PostgreSQL, а к любой базе, но кое-что прежде всего к PostgreSQL.

Главный вывод, который я смог сделать из того, что я видел, довольно неожиданный: фактически любое приложение при должной настойчивости можно заставить работать. Был замечательный проект (я не могу упоминать все компании, с которыми мы работали), в котором еще более замечательное приложение создавало таблицы миллионами. Выглядело это так: в понедельник система работает неплохо, а уже в пятницу она практически не работает. На выходные дни запускают VACUUM FULL, и в понедельник она опять работает хорошо. Оказывается, над PostgreSQL можно вот так издеваться, и всё это довольно долго будет жить и работать. Другой товарищ сделал странную вещь: у него всё было построено на триггерах, процедур не было вообще. То есть большую часть таблиц трогать нельзя, сделать что-либо не получалось, но и эта база жила.
Читать дальше →
Всего голосов 56: ↑56 и ↓0+56
Комментарии39

Люди выгорают, если не чувствуют своей значимости. Что с этим делать?

Время на прочтение7 мин
Количество просмотров28K
Кеша Скирневский, совладелец компании Zebrainy («Сказбука»), рассказал на конференции ProductSense о мотивации с точки зрения устройства мозга.



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

Пока вы не знаете, как работает мозг, вам кажется, что кто-то живет лучше, а кто-то хуже. Вы переживаете: «У меня жизнь такая напряженная, а тот чувак в социальной сети позитивный и успешный». Но мозг вообще не предназначен для того, чтобы человек чувствовал себя счастливым. Наоборот, каждый из нас живет в персональном аду.

Читать дальше →
Всего голосов 30: ↑22 и ↓8+14
Комментарии18

Любопытные извращения из мира ИТ

Время на прочтение11 мин
Количество просмотров127K
Сайт The Daily WTF уже 14 лет собирает курьёзные, дикие и/или печальные истории из мира ИТ. Я перевёл несколько рассказов, показавшихся мне интересными. Все имена и названия компаний изменены.

На работу за 3 000 миль


Правдивая история из личного опыта нашего автора Snoofle. [Оригинал]

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

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

Читать дальше →
Всего голосов 118: ↑111 и ↓7+104
Комментарии117

Создаем читалку eBook с помощью PDFKit на Swift

Время на прочтение3 мин
Количество просмотров6.1K
Добрый день! Представляю вашему вниманию продолжение статьи «Скачиваем, сохраняем и просматриваем PDF в Swift», как и обещал автор — немного подробнее рассмотрим PDFKit.

PDFKit появился в iOS 11, и в нем есть 3 замечательные функции, о которых бы я хотел рассказать, в процессе создания приложения читалки eBook: Разбиение по страницам, Отображение Содержания и Иконка страницы.

Всем, кто заинтересовался, добро пожаловать под кат.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Еще одна причина, почему тормозят Docker контейнеры

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

В последнем посте я рассказывал о Kubernetes, о том, как ThoughtSpot использует его для собственных нужд по поддержке разработки. Сегодня хотелось бы продолжить разговор о короткой, но от того не менее интересной истории отладки, которая произошла совсем недавно. Статья базируется на том, что containerization != virtualization. К тому же наглядно показывается, как контейнеризированные процессы конкурируют за ресурсы даже при оптимальных ограничениях по cgroup и высокой производительности машины.


image

Читать дальше →
Всего голосов 64: ↑57 и ↓7+50
Комментарии13

Что нужно запомнить программисту, переходящему на Python

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

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


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


  • Билл Любанович «Простой Python. Современный стиль программирования»
  • Дэн Бейдер «Чистый Python. Тонкости программирования для профи»
  • Бретт Слаткин «Секреты Python: 59 рекомендаций по написанию эффективного кода»

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


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

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

Конференция PyCon Russia 2018: видео всех докладов и презентации

Время на прочтение6 мин
Количество просмотров9.4K
22-23 июля прошла шестая конференция для python-программистов PyCon Russia. Под катом — много видео, презентации и фотографии. А еще посмотрите отчетный ролик — в нем коротко о том, как прошел PyConRu-2018.


Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии1

Django Channels – ответ современному вебу

Время на прочтение13 мин
Количество просмотров47K
В мире Django набирает популярность дополнение Django Channels. Эта библиотека должна принести в Django асинхронное сетевое программирование, которое мы так долго ждали. Артём Малышев на Moscow Python Conf 2017 объяснил, как это делает первая версия библиотеки (сейчас автор уже запилил channels2), зачем она это делает и делает ли вообще.

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

  • Twisted;
  • Eventlet;
  • Gevent;
  • Tornado;
  • Asyncio.

Казалось бы, зачем писать еще одну библиотеку и надо ли вообще.


О спикере: Артём Малышев независимый Python разработчик. Занимается разработкой распределённых систем, выступает на конференциях по Python. Артёма можно найти по никнейму PROOFIT404 на Github и в социальных сетях.
Всего голосов 44: ↑41 и ↓3+38
Комментарии35

Информация

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