Как стать автором
Обновить
-18
0.2

Пользователь

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

React + Three.js. Creating your own 3D shooter. Part 1

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров5.8K

Hello, dear users of the IT world!

In the era of active development of web technologies and interactive applications, 3D-graphics is becoming more and more relevant and in demand. But how to create a 3D application without losing the advantages of web development? In this article, we will look at how to combine the power of Three.js with the flexibility of React to create your own game right in the browser.

This article will introduce you to the React Three Fiber library and teach you how to create interactive 3D games.

Read more
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Задача коммивояжера (TSP) точное решение — метод ветвей и границ

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

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

Я говорю про NP-трудные задачи (NP-трудность - недетерминированная полиномиальная трудность по времени) и на одной из данного класса хочу акцентировать ваше внимание. Задаче коммивояжера.

Мы не будем рассматривать эвристические алгоритмы, нам нужно точное решение.

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

Отказоустойчивый кластер для балансировки нагрузки

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

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

Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии16

Про двумерную упаковку: offline алгоритмы

Время на прочтение12 мин
Количество просмотров67K
Сегодня, дорогой Хабр, я расскажу тебе историю о комбинаторной оптимизации.
Издревле (как минимум, с начала прошлого века) математики задавались вопросом, как оптимально разместить некоторое количество пива нужных и полезных предметов в рюкзаке. Была сформулирована задача о ранце и ее подзадачи — тысячи их! — которые заинтересовали информатиков, криптографов и даже лингвистов.

От задачи о ранце отпочковалась задача об упаковке в контейнеры (Bin Packing Problem), одной из разновидностей которых является задача двумерной упаковки (2-Dimensional Bin Packing). Снова отбросив несколько вариаций, мы наконец придем к двумерной упаковке в полуограниченную полосу (2-Dimensional Strip Packing, 2DSP). Чувствуете, сколько интересного уже осталось за кадром? Но мы еще не закончили продираться сквозь классификацию. У 2DSP есть два варианта входных данных: когда набор упаковываемых объектов известен заранее (offline-проблема) и когда данные поступают порциями (online-проблема).

В этой статье рассматриваются алгоритмы решения offline-варианта 2DSP. Под катом немного матчасти и много картинок с цветными квадратиками.

В чем, собственно, проблема?


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

Audio over Bluetooth: most detailed information about profiles, codecs, and devices

Время на прочтение24 мин
Количество просмотров303K
XKCD comic. How standards proliferate. SITUATION: there are 14 competing standards. Geek: 14?! Ridiculous! We need to develop one universal standard that covery everyone's use cases. Geek's girlfriend: yeah! SOON: Situation: there are 15 competing standards.

This article is also available in Russian / Эта статья также доступна на русском языке

The mass market of smartphones without the 3.5 mm audio jack changed headphones industry, wireless Bluetooth headphones have become the main way to listen to music and communicate in headset mode for many users.
Bluetooth device manufacturers rarely disclose detailed product specifications, and Bluetooth audio articles on the Internet are contradictory and sometimes incorrect. They do not tell about all the features, and often publish the same false information.
Let's try to understand the protocol, the capabilities of Bluetooth stacks, headphones and speakers, Bluetooth codecs for music and speech, find out what affects the quality of the transmitted audio and the delay, learn how to capture and decode information about supported codecs and other device features.

TL;DR:

  • SBC codec is OK
  • Headphones have their own per-codec equalizer and post processing configuration
  • aptX is not as good as the advertisements say
  • LDAC is a marketing fluff
  • Voice audio quality is still low
  • Browsers are able to execute audio encoders compiled to WebAssembly from C using emscripten, and they won't even lag.

Всего голосов 24: ↑23 и ↓1+22
Комментарии8

Дайджест управления продуктом за декабрь и январь

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


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

Как обычно, продолжаю экспериментировать с форматами и предлагаю вашему вниманию новый выпуск продуктового дайджеста. Больше материалов о продакт-менеджменте, развитии и прочем на моем телеграм-канале

Давайте разбираться последовательно со следующими темами

Чего я хочу? — сформулируем список хотелок, а не целей, объясню позже. 

Что я умею?  — сформулируем список навыков и умений, над которыми стоит работать. 

Истории из жизни — поделюсь своим опытом планирования.

Делитесь тем, а как вы планируете свой год? Приятного прочтения.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Начало работы с stm32 или не повторяйте моих ошибок

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

image


Небольшой рассказ о граблях, встреченных на пути познания ARM на примере stm32f103c8t6 и stm32l151rct6.

Всего голосов 58: ↑44 и ↓14+30
Комментарии66

Тюнинг переходных отверстий печатных плат

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


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

Переход Tinder на Kubernetes

Время на прочтение10 мин
Количество просмотров22K
Прим. перев.: Сотрудники всемирно известного сервиса Tinder недавно поделились некоторыми техническими деталями миграции своей инфраструктуры на Kubernetes. Процесс занял почти два года и вылился в запуск на K8s весьма масштабной платформы, состоящей из 200 сервисов, размещённых на 48 тысячах контейнеров. С какими интересными сложностями столкнулись инженеры Tinder и к каким результатам пришли — читайте в этом переводе.

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

Мой первый компилятор на LLVM

Время на прочтение4 мин
Количество просмотров25K
Это руководство посвящено написанию простейшего компилятора на LLVM. Никакой предварительной подготовки не требуется.



Входным языком нашего компилятора будет BF. Это классический «игрушечный» язык для компиляторов, и даже есть компилятор BF в примерах к LLVM! В этом посте я приведу процесс написания компилятора с пояснениями.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии11

DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter

Время на прочтение3 мин
Количество просмотров45K
Привет, друзья!

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



Кому интересно — прошу под кат.
Читать дальше →
Всего голосов 148: ↑143 и ↓5+138
Комментарии101

Математические основы Auto Layout

Время на прочтение17 мин
Количество просмотров30K
Многие разработчики считают, что Auto Layout — это тормозная и проблемная штука, и крайне сложно заниматься его отладкой. И хорошо, если этот вывод сделан на основе собственного опыта, а то бывает и просто «я слышал, не буду даже и пытаться с ним подружиться».

Но возможно, причина не снаружи, а внутри. Например, самые опасные птицы в мире казуары не будут атаковать людей без причины, только ради самообороны. Поэтому попробуйте на секунду предположить, что это не Auto Layout плохой, а вы его не достаточно хорошо понимаете и не умеете готовить. Так поступил Антон Сергеев и углубился в теорию, чтобы во всем точно разобраться. Нам предлагается готовая выжимка про математические основы Auto Layout.



Всего голосов 39: ↑38 и ↓1+37
Комментарии9

К вопросу о сдвигах, знаках и быстродействии МК

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

«Найди всему причину и ты многое поймешь»


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

Итак, мы начинаем.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии36

Blind Deconvolution — автоматическое восстановление смазанных изображений

Время на прочтение6 мин
Количество просмотров146K
Смазанные изображения — один из самых неприятных дефектов в фотографии, наравне с расфокусированными изображениями. Ранее я писал про алгоритмы деконволюции для восстановления смазанных и расфокусированных изображений. Эти, относительно простые, подходы позволяют восстановить исходное изображение, если известна точная траектория смаза (или форма пятна размытия).
В большинстве случаев траектория смаза предполагается прямой линией, параметры которой должен задавать сам пользователь — для этого требуется достаточно кропотливая работа по подбору ядра, кроме того, в реальных фотографиях траектория смаза далека от линии и представляет собой замысловатую кривую переменной плотности/яркости, форму которой крайне сложно подобрать вручную.


В последние несколько лет интенсивно развивается новое направлении в теории восстановления изображений — слепая обратная свертка (Blind Deconvolution). Появилось достаточно много работ по этой теме, и начинается активное коммерческое использование результатов.
Многие из вас помнят конференцию Adobe MAX 2011, на которой они как раз показали работу одного из алгоритмов Blind Deconvolution: Исправление смазанных фотографий в новой версии Photoshop
В этой статье я хочу подробнее рассказать — как же работает эта удивительная технология, а также показать практическую реализацию SmartDeblur, который теперь тоже имеет в своем распоряжении этот алгоритм.
Внимание, под катом много картинок!
Читать дальше →
Всего голосов 243: ↑239 и ↓4+235
Комментарии150

Восстановление расфокусированных и смазанных изображений. Повышаем качество

Время на прочтение5 мин
Количество просмотров210K
Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


Читать дальше →
Всего голосов 355: ↑352 и ↓3+349
Комментарии86

Семантика копирования и управление ресурсами в C++

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

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



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

Уже год, как в домашних сетевых хранилищах My Cloud от WD зияет дыра

Время на прочтение2 мин
Количество просмотров11K
image
Комикс xkcd

В популярных домашних сетевых хранилищах My Cloud от компании Western Digital обнаружена уязвимость (CVE-2018-17153), она позволяет атакующему обойти механизм аутентификации и создать административную сессию, привязанную к его IP-адресу.

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

Ремко Вермелен, исследователь в области информационной безопасности, обнародовал все детали уязвимости в популярных устройствах Western Digital My Cloud. На этот шаг эксперт пошел тогда, когда компания после нескольких его обращений не устранила брешь и 15 месяцев спустя.

Вермелен проинформировал производителя о проблеме еще в апреле 2017 года, но компания какой-то момент по неизвестной причине в прервала контакты с исследователем. Обычно «белые» хакеры дают компаниям 90 дней на закрытие обнаруженной уязвимости, однако в нашей истории ожидание явно подзатянулось.


Всего голосов 34: ↑32 и ↓2+30
Комментарии9

Английский язык: взгляд инженера

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

ДИСКЛЕЙМЕР


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

Здесь приводится опыт, который выдернул меня из состояния «читаю со словарем».




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

Возьмем такой предмет, как английский язык. Там куча понятий: 12 времен глагола, страдательный залог, причастия и т.п. Кто их ввел? Видимо, некие ученые мужи, для которых английский язык был РОДНЫМ. Они жили себе в каком-нибудь Oxford’e или в Cambridg’e и вряд ли знали русский язык.

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

Вспомните, как вы в школе изучали русский язык. Подлежащее, сказуемое, дополнение, определение… и штук 200 правил, из которых куча исключений, которые все благополучно забывают, кроме собственно учителей русского. И которые потом нужны – максимум – при разборках с бюрократическими документами («казнить нельзя помиловать»).

Английская грамматика – туда же – что-то академическое и малополезное при изучении языка с нуля. Для человека, который более-менее свободно умеет стыковать из английских слов фразу, нужно просто учить новые слова.

Но есть много людей, которые даже стыковать толком не умеют, у них уровень — «читаю и перевожу словарем», в смысле — «заглядываю в словарь за каждым словом из текста».
При отсутствии языковой практики навык сложения английской фразы из слов у них практически отсутствует, что является серьезным барьером на пути к дальнейшему изучению.

Статья ориентирована именно на таких.
Читать дальше →
Всего голосов 95: ↑77 и ↓18+59
Комментарии288

Simple Solder MK936 SMD. Паяльная станция на SMD-компонентах своими руками

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

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

Собрав ее, вы получите опыт работы с компонентами поверхностного монтажа (SMD) и, конечно, полезное устройство.


Всего голосов 32: ↑32 и ↓0+32
Комментарии146

Влияние частоты сигнала на энергетику радиолинков в свободном пространстве

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

Что меняется при изменении применяемого диапазона частот в радиосвязи – не всегда корректно могут сформулировать даже опытные радиолюбители. С одной стороны формула передачи Фрииса крайне проста, и обсуждать, казалось бы, нечего. С другой стороны, в этой формуле кроме явного упоминания длины волны λ, она неявно скрыта в других коэффициентах. Есть много утверждений, заметок и статей, что с более высокими частотами энергетика радиолинков хуже, не меньше есть и статей «разоблачений мифа» — мол ничем высокие частоты не хуже, учите матчасть.


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

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

Информация

В рейтинге
2 262-й
Зарегистрирован
Активность