• Практическое использование автогенерации музыки

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

      В данной статье описывается реализация авто-аккомпанимента для аккордовых прогрессий.

      Читать далее
    • Давайте обсудим мониторинг

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

      Давайте обсудим мониторинг.

      Читать далее
    • Поговорим о централизованном логировании

        Эта статья – продолжение текста о мониторинге. Здесь предлагаю нам с вами поговорить о роли логов в оценке состояния наблюдаемой площадки, посмотреть, что они способны нам дать, а также затронуть вопрос – «можно ли отрывать логи от метрик?».

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

        Итак, давайте поговорим о логировании.

        Читать далее
      • BA дайджест, январь 2021: как отклонять feature request и оценивать стоимость ошибки в БП

        Всем привет! Меня зовут Юра, я BA Tech Lead в NIX, а это – первый выпуск дайджеста для бизнес-аналитиков. В нем вы найдете, на мой взгляд, ценные и достойные внимания материалы за прошлый месяц. Enjoy!

        В скобках возле заголовков – уровень сложности статьи (Normal * → Hard Expert ***) и примерное время на изучение материала.

        Читать далее
      • Мы Опубликовали Качественный, Простой, Доступный и Быстрый Синтез Речи

          fiona


          Вокруг темы синтеза речи сейчас много движения: на рынке есть огромное число тулкитов для синтеза, большое число закрытых коммерческих решений за АПИ (как на современных технологиях, так и на более старых, т.е. "говорилки") от условных GAFA компаний, большое количество американских стартапов, пытающихся сделать очередные аудио дипфейки (voice transfer).


          Но мы не видели открытых решений, которые бы удовлетворяли одновременно следующим критериям:


          • Приемлемый уровень естественности речи;
          • Большая библиотека готовых голосов на разных языках;
          • Поддержка синтеза как в 16kHz так и в 8kHz из коробки;
          • Наличие своих собственных голосов у авторов решения, не нарушающих чужие права и лицензии;
          • Высокая скорость работы на "слабом" железе. Достаточная скорость работы на 1 потоке / ядре процессора;
          • Не требует GPU, команды ML инженеров или какой-либо дополнительной тренировки или для использования;
          • Минимализм и отсутствие зависимостей / использование в 1 строчку / не надо ничего собирать или чинить;
          • Позиционируется именно как готовое решение, а не очередной фреймворк / компиляция чужих скриптов / тулкитов для сбора плюсиков;
          • Решение никак не связано и не аффилировано с закрытыми экосистемами и продуктами Гугла / Сбера / Яндекса / вставить нужное;

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

          Читать дальше →
        • От int main() до BeginPlay: как происходит инициализация Unreal Engine под капотом

          • Translation

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

          Но когда вы пишете игровой код на Unreal Engine, вы не имеете дело с игровым циклом напрямую. Вы не начинаете работать сразу с основной функцией — сначала вы определяете подкласс GameMode и переопределяете функцию под названием InitGame. Или пишете одноразовые классы Actor и Component и переопределяете их функции BeginPlay или Tick для добавления собственной логики. Это самый минимум того, что вам нужно сделать: обо всем остальном движок позаботится за вас.

          Unreal Engine также предлагает вам как программисту мощный и гибкий инструментарий: конечно, он имеет открытый исходный код, но также возможно и расширение несколькими другими способами. Даже если вы только начинаете работать с этим движком, было бы не лишним получить представление о его GameFramework: о таких классах, как GameMode, GameState, PlayerController, Pawn и PlayerState.

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

          Читать далее
          • +21
          • 6.6k
          • 2
        • Три года назад нужно было изучать Docker, два года назад — Kubernetes. Сейчас — Serverless

            Антон Черноусов — developer advocate — пришел в Yandex.Cloud, чтобы заниматься микросервисами, популярными в индустрии Docker и Kubernetes . Но главная его профессиональная страсть — это Serverless. Мы поговорили с Антоном, и он объяснил, почему бессерверные платформы ждет большое будущее.

            Читать далее
          • KubeHelper - упростите множество повседневных задач с Kubernetes через веб-интерфейс

              KubeHelper - это продукт, который упрощает решение многих ежедневных задач связанных с управлением Kubernetes через веб интерфейс. Поиск, анализ, запуск команд, “cron jobs”, репорты, фильтры, git синхронизация и многое другое. 

              KubeHelper это не ещё одна попытка отобразить Kubernetes API в графическом интерфейсе. Не попытка заменить Lens, официальный Dashboard или другие продукты. Это мой скромный вклад в Kubernetes Open Source сообщество. Проект не имеет какого-то узко специализированного направления и содержит довольно много различных функций которые будут полезны в ежедневной работе с Kubernetes.

              Читать далее
              • +11
              • 4.6k
              • 9
            • Обзор платформ для изучения машинного обучения с нуля

                Один из главных вопросов у людей изучающих что-либо - выбор источников информации: курсов, книг, статей. В последнее время, и особенно в изучении data science, широта выбора вводит в ступор: курсов и книг просто море, особенно если рассматривать доступные на английском языке. В данной статье дам субъективный обзор платформ он-лайн обучения, показывая те, которые дают изначально более фундаментальные знания (спойлер: coursera.org и learning.oreilly.com мои фавориты).

                Читать далее
                • +10
                • 10.8k
                • 4
              • Что такое G-Sync, FreeSync, V-Sync и HDMI VRR? — Разбор

                  Всех ПК-геймеров планеты Земля, да и консольных игроков тоже, объединяет одна проблема — вертикальные разрывы изображения. И вроде бы есть куча технологий которые решают эту проблему:

                  • V-Sync,
                  • G-Sync,
                  • FreeSync
                  • А ведь еще есть Adaptive Sync
                  • А в HDMI 2.1 недавно добавили VRR.

                  Но легче от этого не становится. Только больше путаешься. Чем все эти технологии отличаются? Какую выбрать видеокарту и монитор? И будет ли это всё работать на телевизоре?

                  Давайте сегодня раз и навсегда разберемся в технологиях адаптивной синхронизации изображения.


                  Для тех кто не в курсе. А в чём собственно проблема?
                  Читать дальше →
                  • +18
                  • 12.1k
                  • 3
                • Воксели против теневых карт: выбор новой системы освещения для Roblox

                  • Translation


                  В течение последних четырех лет воксели служили в качестве системы освещения в мире Roblox. Но рано или поздно во всем приходит время перемен. Именно поэтому разработчики задались вопросом, что делать дальше.

                  Освещение — штука сложная, так что нужно быть осторожными при выборе новых технологий, ведь при этом необходимо учитывать множество факторов. Для облегчения принятия решения для Roblox создали прототипы двух будущих систем: так называемых вокселей и теневых карт. Для того, чтобы понять ограничения тех и других, сначала важно понять, как они работают.
                  Читать дальше →
                  • +27
                  • 4.8k
                  • 4
                • Linux kernel development для самых маленьких


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

                    Читать дальше →
                  • 7 странных особенностей Go

                    • Translation

                    Когда человек начинает писать на непривычном языке программирования, он всегда обращает внимание на его особенности. Новичку бывает сложно понять причины такого дизайна языка. Своим студентам мы даем необходимый контекст, и постепенно они учатся программировать, учитывая и принимая то, что раньше выводило их из равновесия. Автор статьи разбирает особенности Go, которые смущают начинающих.
                    Добро пожаловать под кат!
                  • О появлении поддержки CUDA в WSL 2

                    • Translation
                    Компания Microsoft, откликаясь на многочисленные просьбы пользователей, представила в мае 2020 года на конференции Build новую возможность подсистемы Windows для Linux 2 (Windows Subsystem for Linux 2, WSL 2) — поддержку видеоускорителей. Это позволит запускать в WSL 2 приложения, занимающиеся специализированными вычислениями. Поддержка GPU откроет дорогу профессиональным инструментам, поможет решать в WSL 2 задачи, которые в настоящее время можно решать только в Linux. Теперь подобные задачи можно будет решать и в Windows, пользуясь возможностями GPU.

                    Крайне важно тут и то, что в WSL приходит поддержка программно-аппаратной архитектуры параллельных вычислений NVIDIA CUDA.

                    Материал, перевод которого мы публикуем, подготовлен специалистами NVIDIA. Здесь речь пойдёт о том, чего можно ожидать от CUDA в Public Preview-версии WSL 2.


                    Запуск AI-фреймворков, используемых в Linux, в WSL 2-контейнерах
                    Читать дальше →
                  • Использование микрофона для создания произведений искусства, реагирующих на звук, на Javascript

                    • Translation
                    • Tutorial
                    Несколько приёмов для создания произведений процедурального (генеративного) искусства.

                    image

                    Настройка объекта для микрофона – вещь достаточно лёгкая, хоть и сначала может показаться сложной. Не надо волноваться. Даже если вы это не очень понимаете, то и не нужно. Потому что когда всё настроено и работает, вам больше никогда не придётся проделывать это всё снова…
                    Читать дальше →
                  • 65 бесплатных курсов по Machine Learning от ведущих университетов мира

                      image

                      Картинка отсюда.

                      Читать дальше →
                      • +5
                      • 8.6k
                      • 4
                    • Средства измерения программ на Go

                        Гофер с лупой


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


                        TL;DR


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


                        Другими словами, логирование и сбор метрик – это подмножества трассировки.


                        Шаблонный код трассировки может быть сгенерирован с помощью gtrace.

                        Читать дальше →
                      • 109 бесплатных курсов по Data Science

                          image

                          Информационные технологии позволяют получить невероятно крутые образовательные ресурсы в один клик. Бесплатно.

                          Я сейчас решаю задачу, как из огромной массы жизненно важного контента выбрать тот, который стоит попробовать в первую очередь, как «разметить данные», чтобы нейросеточка у подрастающего поколения обучилась более эффективно. (ontol.org, «Выгорание», «Удаленка», телеграмм-канал).

                          Предлагаю вам подборку бесплатных онлайн-курсов по Data Science от лучших университетов в мире:

                          Читать дальше →
                        • Шаблон backend сервера на Golang — часть 2 (REST API)

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


                          Первая часть шаблона была посвящена HTTP серверу:


                          • настройка HTTP сервера через командную строку и конфигурационный файл
                          • настройка параметров TLS HTTP сервера
                          • настройка роутера и регистрация HTTP и prof-обработчиков
                          • настройка логирования HTTP трафика, логирования ошибок в HTTP
                          • HTTP Basic и MS AD аутентификация, JSON Web Token
                          • запуск сервера с ожиданием возврата в канал ошибок
                          • использование контекста для корректной остановки сервера и связанных сервисов
                          • настройка кастомной обработки ошибок и кастомного логирования
                          • сборка кода с внедрением версии, даты сборки и commit

                          Вторая часть шаблона посвящена прототипированию REST API.
                          Ссылка на репозиторий проекта осталась прежней.


                          Архитектура шаблона REST API


                          В ходе тестирования шаблона на стенде были получены следующие результаты.


                          • в режиме прямого чтения из PostgreSQL — до 16 000 [get/sec], сoncurrency 1024, медиана 60 [ms]. Кажды Get запрашивает данные из двух таблиц общим размером 360 000 000 строк. Размер JSON 1800 байт.
                          • в режиме кэширования эту цифру можно поднять до 100 000 — 120 000 [get/sec], сoncurrency 1024, медиана 2 [ms]. Transfer rate в пределах 200-250 [MB/sec]
                          • на вставку в PostgreSQL — около 10 000 [insert/sec].
                          Читать дальше →
                          • +8
                          • 14.2k
                          • 2