Как стать автором
Обновить
38
0

Team Lead

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

TorrServer: как смотреть торренты онлайн

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

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

Что нужно при домашнем просмотре фильмов и как это происходит у меня...

Читать далее
Всего голосов 18: ↑17 и ↓1+16
Комментарии51

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

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

hero_image


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


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


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

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


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

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

Декаплинг: качество питания микросхем

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

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

Читать далее
Всего голосов 109: ↑108 и ↓1+107
Комментарии146

Мини-дайджест FPV 2022

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

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

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии4

Управление микроконтроллером через telegram-бот с обратной связью

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

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

При этом для учебно-тренировочных или DIY-задач совершенно не хочется задействовать дополнительные устройства, на которых будет размещаться сервер и уж тем более не оплачивать внешний статический IP-адрес.

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии13

Представление движений в 3D моделировании: интерполяция, аппроксимация и алгебры Ли

Время на прочтение14 мин
Количество просмотров29K
В этой статье мне бы хотелось рассказать об одном интересном математическом приеме, который будучи весьма интересным и полезным мало известен широкому кругу людей, занимающихся компьютерной графикой.

Сколько существует разных способов представить обыкновенный поворот в трехмерном пространстве? Большинство людей, когда-либо занимавшихся 3D-графикой или 3D-моделированием, сходу назовут три основных широко распространенных варианта:

  • Матрица поворота 3x3;
  • Задание поворота через углы Эйлера;
  • Кватернионы.

Люди с богатым опытом добавят сюда почему-то не пользующийся популярностью четвертый пункт:
  • Ось поворота и угол.

Мне бы хотелось рассказать о пятом способе представления вращений, который симпатичен тем, что удобен для параметризации, позволяет эффективно строить полиномиальные аппроксимации этих параметризаций, проводить сферическую интерполяцию, и главное, универсален — с минимальными изменениями он работает для любых видов движений. Если вам когда-либо был нужен метод, который позволял бы легко сделать «аналог slerp, но не для чистых вращений, а для произвольных движений, да еще и с масштабированием», то читайте эту статью.
Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии14

Расставим точки над структурами C/C++

Время на прочтение4 мин
Количество просмотров263K
Недавно познакомился со структурами C/C++ — struct. Господи, да «что же с ними знакомиться» скажете вы? Тем самым вы допустите сразу 2 ошибки: во-первых я не Господи, а во вторых я тоже думал что структуры — они и в Африке структуры. А вот как оказалось и — нет. Я расскажу о нескольких жизненно-важных подробностях, которые кого-нибудь из читателей избавят от часовой отладки…


Читать дальше →
Всего голосов 125: ↑90 и ↓35+55
Комментарии82

STM32: SPI: LCD — Вы всё делаете не так [восклицательный знак]

Время на прочтение8 мин
Количество просмотров84K
Надеюсь сообщество простит меня за такой заголовок, просто в последнее время все чаще и чаще сталкиваюсь с программами в которых к микроконтроллерам STM32 подключают различные дисплеи с интерфейсом SPI и очень часто передачу данных при этом делают не правильно.
Как следствие — либо код не работает совсем и тогда в него внедряют различные задержки, или пишут код таким образом что он гарантированно будет работать медленно (по сравнению с возможной скоростью). А кто то, не разобравшись просто копирует чужой «с костылями» код, и потом такие «произведения» ходят по интернету из примера в пример…
Блок SPI описанный в данной статье точно есть у контроллеров семейств: STM32F1, STM32F2, STM32F4. По другим смотрите Reference Manual.

Откуда растут такие проблемы и каким образом они решаются под катом.
Читать дальше →
Всего голосов 50: ↑45 и ↓5+40
Комментарии44

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение7 мин
Количество просмотров699K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Всего голосов 212: ↑212 и ↓0+212
Комментарии352

Солнечная батарея на балконе: тестирование контроллера заряда

Время на прочтение4 мин
Количество просмотров45K
Привет geektimes!

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

image

Результаты тестирования под катом.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии17

Использование Stream Out-стадии для отладки шейдеров в DirectX 10\11

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

В начале марта я имел удовольствие посетить команду разработки Direct3D в главном офисе Microsoft в Редмонде. По ходу одной из дискуссий об отладке 3D приложений они посоветовали мне использовать новую возможность DirectX10\11 для отладки шейдеров.

Я использовал эту технику для отладки кода тесселяции под DirectX 11 (этот код приведён ниже), но и DirectX 10 обладает теми же возможностями и портирование будет достаточно тривиальным.

Что мы вообще пытаемся сделать?

Нам интересно получить результаты работы выполняемых на GPU шейдеров (вершинных, геометрических, тесселяции) для последующей обработки этих данных с помощью CPU. При этом мы хотим и видеть результаты просчёта графики на экране, и иметь все координаты в виде буферов и структур в оперативной памяти, откуда мы их уже сможем прочитать, записать в лог, использовать для дальнейших расчётов.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии0

Маленькие трюки DirectX и HLSL

Время на прочтение9 мин
Количество просмотров21K
Привет, Хабр! Решил написать статью-заметку о небольших трюках, которые использую в своем скромном движке. Это скорее заметка самому-себе, и матёрые программисты лишь усмехнутся, но, думаю, новичкам она может пригодится.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии8

Алгоритм поиска пути Jump Point Search

Время на прочтение6 мин
Количество просмотров123K
Этот алгоритм является улучшенным алгоритмом поиска пути A*. JPS ускоряет поиск пути, “перепрыгивая” многие места, которые должны быть просмотрены.  В отличие от подобных алгоритмов JPS не требует предварительной обработки и дополнительных затрат памяти. Данный алгоритм представлен в 2011 году, а в 2012 получил высокие отклики. Что из себя представляет данный алгоритм и его реализацию можно прочитать дальше в статье.


Читать дальше →
Всего голосов 110: ↑108 и ↓2+106
Комментарии37

Муравьиные алгоритмы

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

Предисловие


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

Введение


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

Эти факты, однако, никак не согласуются с успешностью муравьев как вида. Они существуют на планете более 100 миллионов лет, строят огромные жилища, обеспечивают их всем необходимым и даже ведут настоящие войны. В сравнении с полной беспомощностью отдельных особей, достижения муравьев кажутся немыслимыми.
Читать дальше →
Всего голосов 83: ↑80 и ↓3+77
Комментарии43

C# 5 — об async/await с начала

Время на прочтение5 мин
Количество просмотров257K
В недавно вышедшей Visual Studio 11 Beta встроена новая и главная фишка будущего C# 5 — асинхронное программирование с помощью async/await. Про нее уже написано достаточно много статей в том, числе на хабре — например, эта серия статей. Однако, я для себя так и не понял в чем суть нового синтаксиса, пока сам не попробовал его в деле. Данная статья — попытка самому структурировать и до конца разобраться с этим достаточно интересным инструментом и поделиться результатами с сообществом, рассказав про него немного иначе. Итак, поехали…
Читать дальше →
Всего голосов 73: ↑70 и ↓3+67
Комментарии62

Анализ исходного кода движка Doom: рендеринг

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

От экрана дизайнера к экрану игрока


Карты разрабатывались дизайнером уровней в 2D с помощью редактора Doom Editor (DoomED). LINEDEFS описывали замкнутые секторы (SECTORS в исходном коде), а третье измерение (высота) указывалась посекторно. Первый уровень Doom E1M1 выглядит так:

image

После завершения работы над картой она нарезается методом двоичного разбиения пространства (Binary Space Partitioning, BSP). LINEDEF рекурсивно выбирались и их плоскости превращались в секущие плоскости. То есть LINEDEF разрезались на сегменты (SEGS) до тех пор, пока не оставались только выпуклые подсектора (SSECTOR в коде).

Интересный факт: И DoomED, и iBSP писались на… Objective-C на рабочих станциях NextStep. Пятнадцать лет спустя тот же язык почти в той же операционной системе выполняет игру на мобильном устройстве! [прим. пер.: в 2010 году Doom вышел на iPhone] Я немного поработал веб-археологом и мне удалось найти исходный код idbsp. На него стоит посмотреть.
Всего голосов 66: ↑66 и ↓0+66
Комментарии10

Почему я не люблю автозапуск или размышления гика у замерзшей машины…

Время на прочтение6 мин
Количество просмотров78K
Поводом для публикации стало горячее обсуждение одного автогаджета вот тут. В комментариях я высказал мнение по поводу функции автозапуска машины (и о проблеме прогрева машины в целом), здесь хочу развернуть тему. Место ли «автомобильной» публикации на ГТ — решать вам, но я считаю, что гик должен быть гиком во всем, понимая происходящие в окружающих его вещах процессы. Тем более, что к любимой машине можно и должно «приложить руки». Все нижеизложенное является: а) результатом наблюдений и эксплуатации автомобилей, б) личным мнением, не претендующим на истину в последней инстанции.

image
Читать дальше →
Всего голосов 45: ↑36 и ↓9+27
Комментарии546

Теорема Гёделя о неполноте за 20 минут

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


Теореме Гёделя о неполноте, одной из самых известных теорем математической логики, повезло и не повезло одновременно. В этом она похожа на специальную теорию относительности Эйнштейна. С одной стороны, почти все о них что-то слышали. С другой — в народной интерпретации теория Эйнштейна, как известно, «говорит, что всё в мире относительно». А теорема Гёделя о неполноте (далее просто ТГН), в примерно столь же вольной фолк-формулировке, «доказывает, что есть вещи, непостижимые для человеческого разума». И вот одни пытаются приспособить её в качестве аргумента против материализма, а другие, напротив, доказывают с её помощью, что бога нет. Забавно не только то, что обе стороны не могут оказаться правыми одновременно, но и то, что ни те, ни другие не удосуживаются разобраться, что же, собственно, эта теорема утверждает.

Итак, что же? Ниже я попытаюсь «на пальцах» рассказать об этом. Изложение моё будет, разумеется нестрогим и интуитивным, но я попрошу математиков не судить меня строго. Возможно, что для нематематиков (к которым, вообще-то, отношусь и я), в рассказанном ниже будет что-то новое и полезное.

Математическая логика — наука действительно довольно сложная, а главное — не очень привычная. Она требует аккуратных и строгих манёвров, при которых важно не перепутать реально доказанное с тем, что «и так понятно». Тем не менее, я надеюсь, что для понимания следующего ниже «наброска доказательства ТГН» читателю понадобится только знание школьной математики/информатики, навыки логического мышления и 15-20 минут времени.

Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии138

Повышаем производительность кода: сначала думаем о данных

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


Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

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

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →
Всего голосов 141: ↑133 и ↓8+125
Комментарии103

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

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

Сегодня без «жести», как вы просили

Уже есть пост про то, как лазер режет с помощью создания миллионов кавитационных пузырей в слое роговицы глаза, и разбор телеметрии с реальной операции по секундам с комментариями действий хирурга. И ещё история операций. Вы задали очень много вопросов. Теперь FAQ про разные сопутствующие вещи.

— Если я посмотрю в сторону во время работы лазера, что случится?

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

— Как должна быть подготовлена операционная?

В целом — как обычная операционная, то есть это помещение с чистой зоной (фильтрация воздуха, избыточное давление для предотвращения загрязнений извне после очистки). Для процедуры важно, чтобы между линзой лазера и глазом не попадали микрочастицы пыли, летающие в воздухе.
Читать дальше →
Всего голосов 107: ↑107 и ↓0+107
Комментарии220

Информация

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