Pull to refresh
12
0
Александр Шатилов @alexbraun

AI CPTO

Send message

Динамическое программирование. Классические задачи

Reading time8 min
Views334K
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

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

Однако среди переборных и некоторых других задач можно выделить класс задач, обладающих одним хорошим свойством: имея решения некоторых подзадач (например, для меньшего числа n), можно практически без перебора найти решение исходной задачи.

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →

Химическое загрязнение превысило безопасный для человечества предел, считают ученые

Reading time5 min
Views7K


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


По их словам, особую озабоченность вызывают пластмассы. А также — 350 000 других разработанных нами химикатов, включая пестициды, промышленные соединения и антибиотики. Пластиковое загрязнение теперь встречается абсолютно везде — от вершины горы Эверест до самых глубоких океанов. А некоторые токсичные химические вещества, такие как ПХД (полихлорированные дифенилы), долговечны, токсичны и особенно широко распространены.

Читать дальше →

Радар технологий: перечень языков, инструментов и платформ, которые прошли через руки Lamoda

Reading time12 min
Views25K
В комментариях к нашей прошлой статье было много вопросов о технологиях, которые мы используем. В этой статье я — Игорь Мосягин, R&D разработчик Lamoda — о них расскажу. Под катом вы найдёте исчерпывающий перечень языков, инструментов, платформ и технологий, которые прошли через наши руки. Фронтенд, бэкенд, БД, брокеры сообщений, кеши и мониторинг, разработка и балансировка — подробный рассказ о том, что мы используем сегодня, а от чего отказались.



Я и мои коллеги готовы подискутировать в комментариях или на стенде компании на HighLoad++ 2018.
Читать дальше →

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

Reading time6 min
Views33K


Что может быть лучше в жизни, чем найти своё призвание и следовать ему? Толя закончил факультет прикладной математики в далёком 1981 году, это был всего второй выпуск нового факультета. Инженер-программист считался необычной и перспективной профессией будущего (так оно и вышло). Но он пришёл не за модной специальностью, как девушки в его группе. Он пришёл туда, куда позвало сердце.

За свою карьеру Толя сменил десяток работ. Советские НИИ, НПО, потом кооперативы, несколько банков, торговые предприятия. Он написал бухгалтерию и склад для местного универсама в FoxPro под DOS задолго до того, как такая идея пришла в голову Борису Нуралиеву. Он написал программу, которая диагностировала хронические болезни просто по скану сетчатки, за что получил государственную премию. Но Толю никогда не интересовал бизнес. Деньги нужны были только для того, чтобы отдать их жене. Всегда его интересовало лишь решение интересных задач.
Читать дальше →

Самообучение в организации и как сделать эффективный тренинг

Reading time6 min
Views8K

Коллеги, всем привет!

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

Читать далее

JavaScript: захват медиапотока из DOM элементов

Reading time11 min
Views17K



Привет, друзья!


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


Мы разработаем простое приложение для сведения аудио и видео со следующим функционалом:


  • пользователь выбирает одно видео и несколько аудио, хранящихся в его файловой системе;
  • когда пользователь нажимает на кнопку для начала записи, запускается воспроизведение выбранных файлов, захватываются их медиапотоки;
  • захваченные потоки объединяются в один и передаются для записи;
  • в процессе записи пользователь может менять источник аудиоданных;
  • пользователь может приостанавливать (например, для изменения источника аудиоданных) и продолжать запись;
  • по окончанию записи генерируется видеофайл в формате WebM — превью сведенного контента и ссылка для его скачивания.

В качестве фреймворка для фронтенда я буду использовать React, однако все функции по работе с медиа будут автономными (сигнатура этих функций будет framework agnostic), так что вы можете использовать любой другой фреймворк или ограничиться чистым JavaScript.


Песочница:

Репозиторий.


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


Если вам это интересно, прошу под кат.

Читать дальше →

Задачи и разборы экзамена ШАД. Часть вторая — с визуальными приёмами

Reading time10 min
Views6.4K
Набор в ШАД продолжается, а тем временем мы с Егором Хайруллиным Mikari разобрали ещё несколько задач из письменного экзамена 2019 года (первая часть — здесь). Сначала пробуйте свои силы и постарайтесь решить задачи самостоятельно — например, номер 8 вообще не содержит формул, к решению можно прийти простыми рассуждениями и рисованием на листочке.

Задача 5. Предел и вероятности


Найдите предел:

$ \begin{align*} \lim _{n\to \infty }\sum _{k=n}^{5n}C_{k-1}^{n-1}\left(\frac{1}{5}\right)^n\left(\frac{4}{5}\right)^{k-n} \end{align*} $


Видеоразбор

Разбор текстом и другие задачи

Ускоряем панораму машины в приложении Авто.ру

Reading time12 min
Views8.9K


В приложении Авто.ру есть такая фича — панорамы автомобилей. Она позволяет любому сделать 3D-фото своей машины, показать её во всей красе. Как это работает и как нашим коллегам из ML удалось уместить в смартфон то, что раньше требовало целого ангара, напичканного дорогостоящим оборудованием, yaantonn уже рассказывал на Хабре.


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

Читать дальше →

Мой опыт технического собеседования: как не превратить его в экзамен и найти профпригодного сотрудника

Reading time21 min
Views31K
image

Привет, Хабр! Меня зовут Леонид Титов, я бэкенд разработчик в #CloudMTS. Так уж сложилось, что я не только пишу код, но и иногда собеседую кандидатов. Мне нравится процесс, и, думаю, у меня это получается.

Начал я этим заниматься ещё на предыдущем месте работы, где мы с тимлидом собирали новую команду. С тех пор прошло уже N лет, практика продолжилась, и после очередного собеседования я решил упорядочить свои знания. Кто-то считает, что от собеседований вообще толку нет, а кто-то наоборот (не будем показывать пальцем) проводит их в 3-5 раундов. Я уверен, что собеседования нужны, но важно четко понимать, зачем именно.

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

Еще я поделюсь неожиданными впечатлениями от ситуации, когда оказался «по ту сторону», лайфхаками, фейлами и неплохо зарекомендовавшими себя практиками. Про soft skills тут ничего не будет — это отдельная важная тема. Прежде всего мы затронем вопрос профпригодности, определения ее наличия или отсутствия. Во второй половине статьи приведу собственный список вопросов, переведенный на русский, с комментариями.
Читать дальше →

Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 1 — Приготовления

Reading time3 min
Views9.1K



Список переведённых частей серии:


  1. Приготовления (вы тут)
  2. Компиляция с Emscripten
  3. Конвертация avi в mp4




Из этой части вы узнаете:


  1. Зачем это всё нужно
  2. Как скомпилировать FFmpeg в Docker



Зачем это всё нужно


Главные задачи у серии публикаций такие:


  1. Создать туториал по использованию Emscripten для компиляции C/C++ библиотек в JavaScript (более детальный и полезный, чем написанные ранее)
  2. Персональная памятка

Почему FFmpeg?


FFmpeg — это свободный проект с открытым исходным кодом, состоящий из обширного набора библиотек и программ для обработки видео, аудио и других мультимедийных файлов/трансляций. (из Википедии)


Библиотеки JavaScript, которая предоставляла бы подобные возможности, попросту не существует. Если вы погуглите «ffmpeg.js», то найдёте несколько решений, подобных тому что мы собираемся сделать:



Эти библиотеки, конечно, можно использовать, но у них есть свои недостатки:


  1. Используемые версии как FFmpeg, так и Emscripten устарели
  2. Проекты не поддерживаются уже долгое время

Изначально я планировал заняться поддержкой какой-нибудь из двух библиотек, но так как за годы накопилось слишком много изменений, решил сделать всё с чистого листа, попутно создав туториал по использованию Emscripten для компиляции большой C/C++ библиотеки.

Читать дальше →

Тянем ролик с YouTube и раздаем по WebRTC в реалтайме

Reading time7 min
Views26K


Задача следующая. Провести совместный просмотр ролика с YouTube в реальном времени несколькими пользователями. Зрители должны получать видео одновременно, с минимальной задержкой.
Читать дальше →

Angular обертка для Apache Cordova плагина для работы с серсивисом Card.IO

Reading time3 min
Views5K

Всем доброго времени суток


Последние несколько месяцев занимаюсь разработкой гибридных мобильных приложений, с использованием Ionic фраемворка и Cordova плагинов. Поскольку сам Ionic использует AngularJs, то использование библиотеки ngCordova было очень удобным из-за Angular обертки.

Но возникла необходимость внедрить в проект поддержку сервиса CardIO. CardIO предоставляет функционал для сканирования фронтальной части кредитной карты. Информация о cvv вводится вручную.

Поискав на сайте Cordova плагин для этого сервиса, и выбрав среди нескольких существующих вариантов, остановился на этом — Plugin. Использовать его в чистом виде не хотелось, потому решил написать Angular обертку для этого плагина, для его дальнейшего использования.
В итоге получилось следующее angular-cordova-cardio
Читать дальше →

Что разработчикам важно в работе. Опрос Stack Overflow

Reading time5 min
Views8.7K
Конкуренция за технические таланты продолжает накаляться. Кажется, что каждый год становится «горячее», чем предыдущий. Согласно почти всем проверенным нами крупным доскам объявлений, в настоящее время открыто более 70 000 технических вакансий (по данным hh.ru — 87 423 в России). При этом почти 80% разработчиков не находятся в активном поиске новой работы. Однако более 50% открыты для новых возможностей, если они появятся на их пути. Все это заставляет задуматься над вопросами, которые волнуют почти каждую команду технического рекрутинга в мире: как привлечь технических специалистов? Что волнует разработчиков, когда они оценивают новые возможности? Мы опросили более 500 разработчиков, и полученные результаты могут вас удивить.


Приятного чтения!

Как я научился делать мобильные приложения на Ionic/Angular за 42 часа

Reading time13 min
Views29K

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

Читать далее

Мы компания в айти — нам всё равно, куда идти

Reading time8 min
Views45K

«Забудь дедукцию, давай продукцию», —  эту формулу я усвоил сразу после окончания института. Тогда я ещё был финансистом и мир науки и образования меня буквально выкинул в мир бизнеса. Я ждал матриц, проектных структур, менеджмента строго по Мескону и Хедоури, а получил «твою мать, какого х** бюджет не сводится, давай, подрисуй цифирь и отправим это уже главнюкам». Вооот, а это была компания на 120 человек с чистой прибылью в пару сотен миллионов. Это было начало 2008 года, который компания пережила, сократив 23 человека. А вот декабрь 2014-го стал последним месяцем существования всего холдинга. Я, уже большой чувак, понимал, что это всё — результат череды управленческих ошибок. К тому времени я работал сисадмином в ИТ-компании и был уверен, что здесь всё будет круто. Сменив три ИТ-компании, я понял, что айтишники при всей инженерной стройности управляют и развиваются без вектора. И знаете, сейчас меня это тревожит.

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

Читать далее

Топ самых востребованных IT-профессий в 2022 году

Reading time7 min
Views120K

Привет, Хабр! Пришло время посмотреть на главные и самые востребованные специальности в IT, которые будут особенно актуальны в 2022 году.

Читать далее

Вышел релиз GitLab 13.11 с агентом для Kubernetes и настройкой конвейера для проверки соответствия требованиям

Reading time30 min
Views3.7K

Картинка для привлечения внимания


В прошедший День Земли мы думали о росте. Наши клиенты масштабируют свои DevOps-процессы, и с их ростом возрастает потребность в ещё большей эффективности и автоматизации контроля. GitLab Kubernetes Agent теперь доступен на GitLab.com, что позволит вам воспользоваться преимуществами быстрых развёртываний на вашем кластере благодаря затягиванию изменений из GitLab, в то время как GitLab.com будет управлять необходимыми серверными компонентами агента. Вы сможете настраивать для проверки соответствия требованиям специальные конвейеры (в русской локализации GitLab «сборочные линии»), которые будут в обязательном порядке выполняться для любого проекта с назначенным набором правил, даже для пользовательских наборов. Кроме того, у нас есть множество фич для оценки и повышения эффективности работы конвейеров, для планирования расписания дежурных инженеров, а также улучшения в области безопасности. Вас ждёт более 50 крутых улучшений и новых фич в этом релизе!

Читать дальше →

Введение в непрерывную поставку (CD) при помощи GitLab

Reading time19 min
Views52K

Введение в непрерывную поставку (CD) при помощи GitLab


Введение в непрерывную поставку (CD) при помощи GitLab


Данный туториал позволит вам быстро прочувствовать как происходит командная работа с использованием GitLab. В целом, начать практиковать DevOps/CD с GitLab проще чем с использованием других продуктов потому что GitLab — это решение "всё в одном".


В процессе этого туториала мы


  • настроим базовое управления проектом на GitLab.com;
  • создадим конвейер непрерывной поставки
  • проведём несколько циклов работы с GitLab Flow
  • изучим метрики CI/CD в GitLab

Желательны но необязательны базовые знания


  • Git;
  • Node.js;
  • React;
  • Docker;
Читать дальше →

Зачем мы создали свою собственную систему видеосвязи с блэкджеком и фичами

Reading time7 min
Views5K

2020 оказался годом удаленки. Уже в марте я был вынужден перевести всю команду на полностью дистанционный формат работы и все процессы пришлось настраивать заново.

Отдельной болью для нас стали видеозвонки. И началось: «Ой, а давайте в Скайпе, Дискорде, Телеграме, Зуме». А потом то девайсы программное обеспечение криво поддерживают, то технические сбои, то аккаунты вне доступа, то обновление софта и еще вагон проблем. Уходила куча времени, чтобы просто связаться и провести совещание.

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

Читать далее

WebRTC через Kurento: опыт тестирования и внедрения

Reading time8 min
Views13K

В этой статье я поделюсь опытом работы с технологией WebRTC и медиасервером Kurento на этапе тестирования и внедрения. Расскажу с какими проблемами я столкнулся и как их решил. Я не расскажу о том как разработать приложение с нуля, но приведу много полезных ссылок. Уверен, что мой рассказ будет полезен тем, кто собирается работать с WebRTC.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity