Pull to refresh
0
0
Send message

Реконструкция Midi из видео роликов Synthesia (и ей подобным)

Reading time2 min
Views7.9K

Как то раз сидя в ютубе ведя поиск интересных обучающих мелодий наткнулся на ролики с Synthesia, часть из которых мне очень понравилась, решил скачаю да и поучусь… =) Но увы как оказалось ролики есть, а вот midi файлы никто не горел желанием выкладывать =(


Засев за гугл решил посмотреть может есть готовые решения которые бы меня устроили, но увы из того что нашёл были только аудио конвертеры в midi, что меня слегка расстроило… Недолго думая решил что для восстановления MIDI частоты кадров в видео роликах будет достаточно..., и Я решил попробовать реализовать это дело....

Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments20

Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

Reading time54 min
Views19K

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

Читать далее
Total votes 75: ↑75 and ↓0+75
Comments7

Яндекс выложил в опенсорс YDB

Reading time16 min
Views146K
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



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

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Total votes 262: ↑259 and ↓3+329
Comments135

Миллион одновременных соединений

Reading time8 min
Views63K

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

Адрес TCP/IP поддерживает только 65000 подключений, поэтому придётся назначить этому серверу примерно 30000 IP-адресов.

Существует 65535 номеров TCP-портов, значит ли это, что к TCP-серверу может подключиться не более 65535 клиентов? Можно решить, что это накладывает строгое ограничение на количество клиентов, которые может поддерживать один компьютер/приложение.

Если есть ограничение на количество портов, которые может иметь одна машина, а сокет можно привязать только к неиспользуемому номеру порта, как с этим справляются серверы, имеющие чрезвычайно большое количество запросов (больше, чем максимальное количество портов)? Эта проблема решается распределением системы, то есть кучей серверов на множестве машин?

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

  1. Мессенджер WhatsApp и веб-фреймворк Phoenix, построенный на основе Elixir, уже продемонстрировали миллионы подключений, прослушивающих один порт.
  2. Теоретические возможности на основе протокола TCP/IP.
  3. Простой эксперимент с Java, который может провести на своей машине любой, если его всё ещё не убедили мои слова.

Если вы не хотите изучать подробности, то перейдите в раздел «Итоги» в конце статьи.
Читать дальше →
Total votes 82: ↑80 and ↓2+99
Comments27

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

Reading time8 min
Views51K

hero_image


В нашей прошлой статье про синтез речи мы дали много обещаний: убрать детские болячки, радикально ускорить синтез еще в 10 раз, добавить новые "фишечки", радикально улучшить качество.


Сейчас, вложив огромное количество работы, мы наконец готовы поделиться с сообществом своими успехами:


  • Снизили размер модели в 2 раза;
  • Научили наши модели делать паузы;
  • Добавили один высококачественный голос (и бесконечное число случайных);
  • Ускорили наши модели где-то примерно в 10 раз (!);
  • Упаковали всех спикеров одного языка в одну модель;
  • Наши модели теперь могут принимать на вход даже целые абзацы текста;
  • Добавили функции контроля скорости и высоты речи через SSML;
  • Наш синтез работает сразу в трех частотах дискретизации на выбор — 8, 24 и 48 килогерц;
  • Решили детские проблемы наших моделей: нестабильность и пропуск слов, и добавили флаги для контроля ударения;

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


Попробовать модель как обычно можно в нашем репозитории и в колабе.

Читать дальше →
Total votes 130: ↑129 and ↓1+156
Comments101

Запуск werf в GitLab CI/CD без Docker-сервера

Reading time6 min
Views6.9K

В этой статье рассмотрен новый экспериментальный режим работы werf — Open Source-утилиты для сборки приложений и их деплоя в Kubernetes, — в котором не требуется наличие Docker-сервера. Мы покажем, как убедиться, что это режим будет работать на вашей машине, соберем первый образ и научимся использовать Kubernetes executor для автоматизации сборки в GitLab CI/CD.

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments7

Локальная разработка в Kubernetes с помощью werf 1.2 и minikube

Reading time12 min
Views14K

В этой статье на примере простого приложения будут описаны подготовка и развертывание инфраструктуры для локальной разработки с Kubernetes и последующий запуск проекта в этом окружении.

Зачем это может понадобиться? Предоставляя услуги поддержки инфраструктуры нашим клиентам, нам часто приходится искать баланс между эффективностью и затраченными ресурсами. Когда есть потребность в нескольких рабочих окружениях для разработчиков (stage, dev, test, review и т.п.), как правило, ограничивающим фактором в их реализации являются деньги. Поэтому для решения такой задачи — в дополнение к динамическим окружениям (или вместо них) — задействуются локальные окружения прямо на рабочих местах разработчиков, о которых и пойдет речь далее.

Читать далее
Total votes 44: ↑44 and ↓0+44
Comments32

Selenium за 60 секунд

Reading time5 min
Views84K

Представляю вам перевод моей статьи на Medium.com.


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



Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments29

Знакомство с PromQL + Cheatsheet

Reading time5 min
Views41K

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

Поскольку Prometheus хранит данные в виде временных рядов (time-series data model), запросы PromQL радикально отличаются от привычного SQL. Понимание, как работать с данными в Prometheus, является ключом к тому, чтобы научиться писать эффективные запросы.

Читать далее
Total votes 5: ↑4 and ↓1+4
Comments2

Сложение двух чисел с плавающей запятой без потери точности

Reading time9 min
Views80K
Здравствуйте, друзья, как вы думаете, если мы напишем такой код:

s = a+b;
z = s-a;
t = b-z;

то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел $a$ и $b$. Кого интересует данная тема, прошу под кат.

Total votes 99: ↑97 and ↓2+135
Comments172

Бесплатные ресурсы для инди-разработчиков

Reading time6 min
Views18K
image

Я изучаю гейм-дизайн и разработку игр. Когда я начала создавать свою первую игрушку (гифка оттуда) по мотивам мультсериала «We Bare Bears», то подолгу зависала, чтобы отрисовать фон, кнопочку, анимацию разрушения блока и пр. Часть артов я, по итогу, не использовала, а время на них тратила много.

За полгода я накопила список ресурсов с бесплатными ассетами, персонажами, музыкой, фонами. Эти ресурсы помогают мне экономить по 10-20 часов на создании учебных игровых проектов. Надеюсь, кому-то этот список сэкономит время и позволит создавать атмосферные прототипы быстро.

Updated: я тут немножко подумала, и создала канал в Telegram: GameDEVils, буду там делиться материалами (про геймдизайн, разработку и историю игр), которые слишком короткие, чтобы положить в статью на Хабре.
Читать дальше →
Total votes 46: ↑45 and ↓1+53
Comments14

Создание переиспользуемых пайплайнов для GitLab CI на bash

Reading time11 min
Views20K

За последние несколько лет я очень полюбил GitLab CI. В основном за его простоту и функциональность. Достаточно просто создать в корне репозитория файл .gitlab-ci.yml , добавить туда несколько строчек кода и при следующем коммите запустится пайплайн с набором джобов, которые будут выполнять указанные команды.

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

Но к сожалению, не всё так радужно, как хотелось бы. Инструкция script в GitLab CI очень низкоуровневая. Она просто выполняет те команды, которые ей переданы в виде строк. Писать большие скрипты внутри YAML не очень удобно. По мере усложнения логики количество скриптов увеличивается, они перемешиваются с YAML делая конфиги нечитаемыми и усложняя их поддержку.

Мне очень не хватало какого-то механизма, который бы упростил разработку больших скриптов. В результате у меня родился микрофреймворк для разработки GitLab CI, про который я и хочу рассказать в этой статье (на примере простого пайплайна для сборки docker-образов).

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments12

Nginx cache: всё новое — хорошо забытое старое

Reading time12 min
Views103K
В жизни каждого проекта настает время, когда сервер перестает отвечать требованиям SLA и буквально начинает захлебываться количеством пришедшего трафика. После чего начинается долгий процесс поиска узких мест, тяжелых запросов, неправильно созданных индексов, не кэшированных данных, либо наоборот, слишком часто обновляемых данных в кэше и других темных сторон проекта.

Но что делать, когда ваш код “идеален”, все тяжелые запросы вынесены в фон, все, что можно, было закэшировано, а сервер все так же не дотягивает до нужных нам показателей SLA? Если есть возможность, то конечно можно докупить новых машин, распределить часть трафика и забыть о проблеме еще на некоторое время.

Но если вас не покидает чувство, что ваш сервер способен на большее, или есть магический параметр, ускоряющий работу сайта в 100 раз, то можно вспомнить о встроенной возможности nginx, позволяющей кэшировать ответы от бэкенда. Давайте разберем по порядку, что это, и как это может помочь увеличить количество обрабатываемых запросов сервером.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments27

Dashboard Postgresql Overview для postgres_exporter (Prometheus)

Reading time10 min
Views23K

Сделал dashboard Postgresql overview для postgres_exporter.


Чем отличается от других дашбородов postgres_exporter?


Я объединил все другие дашборды postgres_exporter в один.


Этот дашборд показывает общую информацию по кластеру.


Скриншоты и краткая инструкция по установке: postgresql, postgres_exporter, prometheus, grafana под катом.

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments10

Обзор сетевых протоколов и протоколов обмена сообщениями для IoT

Reading time5 min
Views19K

Привет, хабровчане! Первый в России онлайн-курс IoT-разработчик стартует в OTUS уже в октябре. Прямо сейчас открыт набор на курс, в связи с чем мы продолжаем делиться с вами полезными материалами.

Интернет вещей (IoT, Internet of Things) будет построен на базе существующей сетевой инфраструктуры, технологий и протоколов, используемых в настоящее время в домах/офисах и в Интернете, и предложит много другого.

Цель данного руководства — дать краткий обзор сетевых и прикладных протоколов для IoT.

Примечание. У вас должны быть знания основ сетевых технологий.

Читать далее
Total votes 13: ↑6 and ↓7+3
Comments0

Впечатления о Golang от разработчика на PHP

Reading time4 min
Views24K

Привет! Меня зовут Андрей Литвиненко и я имею почти 15-летний опыт разработки на PHP. Уже около трех месяцев я активно пишу на Go и хочу поделиться наблюдениями, которые отметил для себя. Возможно, этот текст будет полезен тем, кто сейчас знаком с PHP и подумывает познакомиться с Go.

Читать далее
Total votes 38: ↑30 and ↓8+26
Comments94

ElasticSearch: отказоустойчивый сервер отказал

Reading time8 min
Views14K
image
Всем привет, меня зовут Илья, я работаю в компании DINS на должности инженера отдела мониторинга. В этой статье расскажу о нашей боли при работе с ElasticSearch. Мне не удалось найти решение этой проблемы где-либо ещё, поэтому, думаю, этот туториал будет интересен всем, кто использует ElasticSearch.
Читать дальше →
Total votes 25: ↑24 and ↓1+32
Comments17

Мобильный подавитель микрофонов на Arduino. Принцип работы

Reading time4 min
Views34K


Вокруг нас куча звукозаписывающей техники — смартфоны, камеры, умные часы, умные колонки, диктофоны. Могут быть ещё скрытые прослушивающие устройства, жучки. Некоторые гаджеты работают в режиме непрерывной прослушки (голосовые помощники в колонках, смартфонах, часах). Чтобы защитить человека, в прошлом году инженеры из Чикагского университета разработали элегантный браслет, который глушит все микрофоны вокруг.

Универсальная глушилка или подавитель микрофонов — полезная вещь для защиты приватности как в помещении, так и на улице. Посмотрим, как она работает.
Читать дальше →
Total votes 33: ↑31 and ↓2+43
Comments38

Кросс-браузерное тестирование в Selenium

Reading time8 min
Views16K

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

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

Примечание: Код из этой статьи находится на GitHub здесь.

Читать далее
Total votes 8: ↑7 and ↓1+9
Comments1

Опыт миграции из Gitea в GitLab. Сложно, но успешно

Reading time11 min
Views22K

В мире существует множество различных систем для хранения кода. Различаются они как протоколом работы: Git, Mercurial, Bazaar, — так и форматом работы (cloud, self-hosted). Но есть и другой важный параметр: степень интеграции с сопутствующим инструментарием: issue tracker, CI/CD, wiki и т.д. Так сложилось, что мы в компании предпочитаем GitLab (вариант on-premise) и по умолчанию, если клиент не против, предлагаем ему это решение. В статье я расскажу про миграцию из Gitea c Jenkins в GitLab и о том, с какими сложностями пришлось столкнуться, а заодно поделюсь Python-скриптами, которые пригодились для успеха этого мероприятия.

Читать далее
Total votes 36: ↑35 and ↓1+43
Comments31

Information

Rating
Does not participate
Registered
Activity