Как стать автором
Обновить
12
0
Виталий Оразов @viordash

Программист

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

Полиморфизм: подавать холодным

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров22K

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

Читать далее
Всего голосов 12: ↑11 и ↓1+12
Комментарии33

Радиотелефончик на смартфоне

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров21K
image

Немало воды утекло со времени публикации цикла про стриминг видео на Андроид устройствах, но вот ручки добрались и до аудио потоков. Не то, чтобы это была какая-то более заковыристая тема про сравнению с видео, даже наоборот, сложно придумать что-то проще, ибо Audio API не менялось, дай бог памяти, с 2012 года, если не раньше. И не стоило бы, ради этого пилить короткий пост, если бы не зудящая мысля — а на какое расстояние и каким образом можно передать сей аудио поток, если мы будем использовать для этого только два смартфона без всякой мобильной связи и внешних точек доступа.

Если вам интересно узнать, что из этого получилось, то прошу проследовать под кат…
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии65

Как мы делали AEC для воспроизведения звука через HDMI на Станции Макс

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


В недавнем апдейте прошивки для Яндекс Станции Макс мы добавили поддержку вывода звука по кабелю HDMI при просмотре фильмов. Если у вашего телевизора хорошая акустика (или к нему подключена качественная аудиосистема), теперь можно слушать аудиодорожку через неё. Это обновление мы выпустили только сейчас, потому что оно потребовало нетривиальных технических решений. Например, нужно было сделать эхоподавление для HDMI. Вот об этом и поговорим — сначала обсудим историю технологий и проблемы с подавлением собственного звука устройства, а затем перейдём к нашему решению.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии17

Делай нейминг как сеньор

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

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее
Всего голосов 148: ↑146 и ↓2+182
Комментарии221

5 советов, которые помогут при переносе кода на платформы, отличные от х86

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

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

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

Linux на смартфоне: считываем показания сенсоров и программируем «Куб времени» в Node-RED

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

И снова привет! В прошлом уроке мы посмотрели проект для смартфона “Погодная станция”. Сегодня будем делать более сложный проект: “Куб времени”. Это устройство для тайм-менеджмента, которое поможет вам вести лог собственных занятий и знать, сколько времени вы тратите на работу, учебу, чтение, спорт, игры и другие занятия, а также планировать ваш день. Интересный гаджет и хороший пример для обучения программированию.

В ходе работы над проектом мы начнем писать свои собственные программы в Node-RED, более детально изучим возможности Termux (эмулятора среды Linux под смартфон) и запрограммируем сценарий, задействующий сенсорику смартфона!

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

Пишем обобщённую хеш-таблицу с открытой адресацией на чистом C

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

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

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

К разработке этой библиотеки и написанию статьи меня натолкнуло отсутствие незаброшенной библиотеки эффективных хеш-таблицы для C.

Читать далее
Всего голосов 24: ↑20 и ↓4+22
Комментарии38

Как самому за один вечер собрать минимальную ОС Linux из исходного кода

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

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

Ещё больше не даёт покоя мне тот факт, что все ядра операционной системы Linux, которые работают на различных устройствах и серверах, собраны из исходного кода, находящегося в репозитории на сайте kernel.org.

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

Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Читать дальше →
Всего голосов 83: ↑82 и ↓1+108
Комментарии83

Как увеличилась производительность LINQ в .NET 7?

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

В новой версии .NET улучшилась производительность методов Min, Max, Average и Sum для массивов и списков. Как вы думаете, во сколько раз увеличилась скорость их выполнения? В 2 раза, в 5? Нет, они стали гораздо быстрее. Посмотрим, как этого удалось достичь.

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

Когда TCP-сокеты отказываются умирать

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

Когда TCP-сокеты отказываются умирать

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

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

Что нового в .NET 7?

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

Вышел .NET 7, а это значит, что можно вдоволь насладиться различными нововведениями и фишками. Расскажем про самые интересные улучшения: C# 11, контейнеры, производительность, GC и прочее.

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

Сумачечая производительность LINQ в .Net7

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

Исторически так сложилось, что LINQ взыскал "сомнительную" репутацию за его скромную производительность. LINQ медленный, аллоцирует память, сложно читается, поэтому обычно его используют как инструмент запросов к БД и то, зачастую сложные запросы легче написать на SQL. Даже на собеседованиях джунов просят не использовать LINQ в алгоритмах.

Однако в .NET 7 всё будет по-другому...

Подробней...
Всего голосов 32: ↑26 и ↓6+25
Комментарии26

WiFi-портал в Россию – Как работать из-за границы, если компания не разрешает?

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

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

Читать далее
Всего голосов 67: ↑41 и ↓26+29
Комментарии170

Рисуй, чтобы победить

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

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

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

Читать далее
Всего голосов 25: ↑24 и ↓1+28
Комментарии7

Peer-to-Peer доставка видео на базе WebRTC

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

Доставлять высококачественное видео с помощью CDN дорого, а неравномерность нагрузки усложняет всё ещё сильнее. Можно ли улучшить эту ситуацию и сэкономить?

На нашей прошлогодней конференции VideoTech Руслан Гильмутдинов рассказал о p2p-подходе, позволяющем минимизировать зависимость от CDN и снизить затраты. 

А теперь, пока мы готовимся провести VideoTech 2022 с новыми докладами уже на этой неделе, сделали для Хабра текстовую расшифровку его выступления (видеозапись также прилагаем). Далее повествование будет от лица Руслана.

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

Как можно установить «опасный» российский сертификат в Windows

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

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

Читать далее
Всего голосов 47: ↑41 и ↓6+45
Комментарии76

Микроскоп из оптических головок от DVD-привода

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

Небольшой и доступный проект по сборке лазерного сканирующего микроскопа на основе двух оптических головок и многофункционального инструмента “Analog Discovery”. Одно из преимуществ такого микроскопа в возможности выравнивания лазерного пятна относительно изучаемого образца с точностью до микрометра.
Читать дальше →
Всего голосов 59: ↑54 и ↓5+65
Комментарии32

Небольшое расследование: как YouTube использует WebRTC для стриминга

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

WebRTC — это JavaScript API в современных браузерах для видеозвонков. А еще для голосовых звонков, шаринга экрана, пробития NAT, раскрытия локального адреса и других интересных штук. В последние пару лет крупные игроки начинают переходить с пропиетарных API и расширений браузеров на WebRTC: с его помощью работает Skype for Web, частично — Hangouts, а теперь и возможности YouTube по броадкасту прямо из браузера. Пока только из хрома и с пятисекундной задержкой — но велика беда начало. Под катом мы предлагаем адаптированный для Хабра перевод детективной истории, где эксперты по WebRTC разбирают код клиентской части YouTube и рассказывают нам что и как сделали разработчики из Гугла.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

Как отлаживать WebRTC

Время на прочтение11 мин
Количество просмотров38K
В Voximplant мы используем WebRTC с момента ее появления: сначала как альтернативу Flash для голосовых и видеозвонков, а затем как полную замену. Технология прошла долгий и болезненный путь развития, только недавно ее стали поддерживать все основные браузеры, есть сложности с передачей экрана, нескольких видеопотоков, а иногда браузер падает просто если выключить и включить видеопоток. Накопленный опыт позволяет переводить для Хабра интересные статьи, и сегодня мы передаем слово Ли Сильвестру из Xirsys, который расскажет про отладку (видео)звонков в Chrome, Firefox, Safari и Edge. Отлаживать WebRTC непросто, у нас даже есть специальные инструкции по снятию логов в популярных браузерах. А что есть у Ли – вы узнаете под катом (спойлер: много всего, включая WireShark).

Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии2

Паттерн внедрение зависимостей в .NET nanoFramework для микроконтроллеров

Время на прочтение11 мин
Количество просмотров4.2K
.NET nanoFramework Weatherstation

Сегодня сломаем привычный мир инженеров и разработчиков встраиваемых систем на микроконтроллерах. В .NET существует замечательный паттерн программирования, как внедрение зависимостей (Dependency injection, DI). Суть паттерна заключается в предоставление механизма, который позволяет сделать взаимодействующие в приложение объекты слабосвязанными. Эти объекты будут связаны между собой через абстракции, например, через интерфейсы, что делает всю систему более гибкой, более адаптируемой и расширяемой. Но когда ведется разработка для микроконтроллеров, все зависимости обычно жестко завязаны на используемых устройствах, и замена датчика иногда приводит к существенному переписыванию программного кода. Напишем приложение на .NET nanoFramework для микроконтроллера ESP32, используя паттерн DI с возможностью легкой замены датчиков и LCD экрана.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+7
Комментарии12

Информация

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