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

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

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

Разработка универсального ПЛК для домашних агрегатов

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

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

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

IAX2 one love (межASteriskные транки)

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

Это короткое продолжение серии про Asterisk.
Пердыдущие части Часть 1, Часть 2, Часть 3

Я расскажу как и почему я ограниченно применяю IAX2 в контексте предыдущих записей.

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

Value: библиотека реактивного программирования для Dart

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

Статья посвящена моей реализации идей реактивного программирования в Dart и Flutter. Рассказываю про разработанную мною библиотеку Value, которая в ряде случаев хорошо подходит для замены Stream, ValueNotifier и rxdart.

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

Tarantool: как избавиться от «зоопарка технологий» с помощью потоков событий

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


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

Меня зовут Иван Банников, я ведущий разработчик VK Tech. В этом материале я расскажу об основных предпосылках разрастания используемого стека, а также на примере IoT-платформы, которую мы поддерживали, поделюсь опытом избавления от «зоопарка технологий» в области обработки сообщений.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии0

Исправление прикуса и имплантация зубов, в чём связь?

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

Приветствую, дорогие друзья и недруги! Я написал много статей на тему зубов мудрости, имплантации и костных пластик. Рассказывал про комплексный подход в стоматологии и раскрывал голую правду. Сегодня же, я расскажу вам про важность ортодонтического лечения до протезирования отсутствующих зубов с использованием дентальных имплантатов.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии2

Разработка мультиплеерной игры на Dart+Flutter

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

Разработка простой мультиплеерной игры с использованием языка программирования dart на сервере и flutter+flame на клиенте. Небольшой гайд от любителя игростроя.

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

Пишем свою мини-СУБД на Golang (Часть 1)

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

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

Читать далее
Всего голосов 12: ↑4 и ↓8-4
Комментарии4

Зоопарк трансформеров: большой обзор моделей от BERT до Alpaca

Уровень сложностиСложный
Время на прочтение59 мин
Количество просмотров17K

Авторский обзор 90+ нейросетевых моделей на основе Transformer для тех, кто не успевает читать статьи, но хочет быть в курсе ситуации и понимать технические детали идущей революции ИИ.

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

Простая чистая архитектура

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

Привет, Хабр! Зачем нужна архитектура и какие цели она должна выполнять?

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

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

FaceNet: Универсальный эмбеддинг для распознавания и кластеризации лиц

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

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

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

Генерируем X509 сертификат с OpenSSL C++

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

В данной статья я хочу рассказать, как работать с X509 сертификатом используя OpenSSL 3.0.0 в С++, начиная от генерации своего сертификата и заканчивая его валидацией.

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

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

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии27

Репликация в PostgreSQL: Write-Ahead Logging (WAL) и Logical Replication

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

Репликация PostgreSQL с опережающей записью (WAL) — ключевая концепция в высоконагруженных архитектурах, поскольку она позволяет создавать высокодоступные и отказоустойчивые системы баз данных.

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

Электронный конструктор, не бьющий током

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

Дайте угадаю: вы в детстве заворожённо рассматривали печатные платы? Вам было любопытно узнать, как работает этот мини-город из разноцветных деталек? Возможно, у вас был опыт сборки электронных схем по книгам Борисова и Свореня? Советский сорокаваттный паяльник, кусочек канифоли в спичечном коробке? А ещё штаны с намертво влипшей в ткань каплей припоя?

Современные программные средства иллюстрируют процессы, происходящие в электрических цепях, с недосягаемыми для радиолюбителей недавнего прошлого наглядностью и интерактивностью. Они визуализируют протекающие по схеме токи и показывают напряжения в её различных частях. Это снижает порог понимания для людей, которым сложно даются абстрактные знания и язык формул.
Читать и смотреть картинки
Всего голосов 163: ↑163 и ↓0+163
Комментарии153

Делаем новый контроллер сервоприводов

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

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

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

Разбираемся что MySQL пишет на диск и зачем [часть 2]

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров4.9K

Это вторая часть моих копаний во внутренностях MySQL. В первой части [habr] были затронуты запись страниц данных на диск (с промежуточной записью в DoubleWrite buffer) и запись бинлогов (с батчингом в виде group commit). В этой части я расскажу про redo log и как все части MySQL координируются для достижения надежной работы.

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

Есть ли жизнь без RTTI: пишем свой dynamic_cast

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

В современном С++ осталось не так много вещей, которые не подходят под парадигму "Не плати за то, что не используешь". Одна из них – dynamic_cast. В рамках данной статьи мы разберёмся, что с ним не так, а когда поймём – попробуем предложить альтернативу.

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

Пробую российский софт для умного дома. Он правда работает?

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

Всем привет! С вами снова Дмитрий, не программист. В прошлый раз я установил на Wiren Board 7 визуальную среду Node-RED, не умерев в консоли. И даже проверил четыре популярных сценария: ноду Debug, мастер-выключателя, включения вытяжки при превышении концентрации CO₂, приборной панели (dashboard). Позднее я рассмотрел еще три сценария: темной комнаты, дневного/ночного освещения, термостата для теплого пола и батарей.

Но умный дом можно собрать не только на визуальной среде Node-RED. Российские разработчики давно предлагают программный пакет Sprut.hub для домашней автоматизации. Сценарии можно задавать как через фирменную визуальную среду, так и скриптами js. В Sprut.hub поддерживается большое число различных устройств, а некоторые пользователи считают его даже удобнее и проще Node-RED. Значит, настало время его попробовать! Более подробную информацию о Sprut.hub можно почерпнуть здесь.

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

Книга «Искусственный интеллект и компьютерное зрение. Реальные проекты на Python, Keras и TensorFlow»

Время на прочтение10 мин
Количество просмотров12K
image Добрый день, Хаброжители!

Кем бы вы ни были — инженером-программистом, стремящимся войти в мир глубокого обучения, опытным специалистом по обработке данных или любителем, мечтающим создать «вирусное» приложение с использованием ИИ, — наверняка задавались вопросом: с чего начать? Практические примеры из этой книги научат вас создавать приложения глубокого обучения для облачных, мобильных и краевых (edge) систем. Если вы хотите создать что-то необычное, полезное, масштабируемое или просто классное — эта книга для вас.

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

В этой книге вы:
• Узнаете, как обучать, настраивать и развертывать модели компьютерного зрения с помощью Keras, TensorFlow, Core ML и TensorFlow Lite.
• Изучите интересные проекты, в том числе Not Hotdog из сериала Silicon Valley и еще более 40 примеров.
• Смоделируете беспилотный автомобиль в видеоигровом окружении и создадите миниатюрную версию, использовав технологию обучения с подкреплением.
• Научитесь использовать перенос обучения для быстрого обучения моделей.
• Найдете более 50 практических советов по повышению точности и скорости модели, отладке и масштабированию до многомиллионной аудитории.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Пять лет страха врачей: как мы это разбирали и сколько это стоило пациентке

Время на прочтение11 мин
Количество просмотров15K
Привет от циничных хирургов! Если у вас болят зубки, а вы не ходите к врачу, то попадаете к нам. Всегда. Хотя, конечно, можно ускользнуть и сразу попасть к патологу, но обычно мы быстрее.

Вводная: пациентка 32 лет, с сильным страхом перед стоматологами. Развился он всего пять лет назад, потому что некие моральные уроды лечили её без седации и анестезии. И не обращали внимания на крики и попытки выбраться из кресла, продолжая упорно лечить сверлом. Ну вот бывают иногда и такие врачи, да. У неё развилась серьёзная психологическая травма и панический страх врачей. Заодно слегка перекосило лицо, потому что там лечили удалением, а без зубов ровной улыбки не будет. Зубов осталось 20 штук, причём некоторые она потеряла при получении травмы, а некоторые сами отвалились за эти пять лет.

Она нам так и сказала: «Я хочу полностью восстановить зубы. Но я очень боюсь». Мой бесконечно добрый коллега Антон восхитился её смелостью и предложил нам решить прикладную задачу, как не пугать пациентку. Я сразу предложил лишить её сознания. Проверенный метод. Рекомендую. Нам, хирургам, очень нравится. Серьёзно мог напугать только счёт, по современным ценам там работы минимум на 4–5 миллионов российских рублей. Так что просто знайте, что бояться терапевта дорого. Бояться хирурга ещё дороже.


Фото для затравки — так наша пациентка стала выглядеть после лечения. Сможете найти новые зубы?

Особого мяса и крови в этом посте не будет, но, если вам неприятно смотреть на фото ротовой полости, сейчас будет немного неприятно.
Читать дальше →
Всего голосов 60: ↑51 и ↓9+42
Комментарии39

Обзор всего доступного в С++ type erasure

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

Техника стирания типов - type erasure - известна довольно давно, хоть её и долго не замечали. Тем не менее кажется только в последнюю декаду она стала из игрушки и костылей превращаться в мощный инструмент, использующийся каждый день в разработке.

Если спросить современного С++ разработчика какие примеры type erasure он видел / использовал, то вероятно он ответит что то про std::function и возможно про std::any, но это лишь малая часть всех применений этого замечательного инструмента!

В статье я постараюсь описать все возможные виды type erasure в современном С++, но начать стоит с определения.

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

Начнём с того, что было уже в С и о чём часто забывают говоря об erasure

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

Кстати, насчёт байтов:

std::byte (since C++17) / unsigned char / char так исторически сложилось, что в С все использовали чары для работы с сырыми байтами, поэтому для них в языке С++ исключение и указатель на них можно приводить к указателю на любой другой тип. Это не обходится без последствий и иногда из-за этого строки теряют некоторые оптимизации, поэтому сначала добавили std::byte, а потом начали потихоньку заменять чары (char8_t since C++20), но это уже совсем другая история. В контексте стирания типов нам важно, что мы получили способность читать данные из стёртого типа, а составив массив мы получим ещё и верхнюю границу размера типа, что конечно немного, но с void и так нельзя.

[erased]
Всего голосов 23: ↑21 и ↓2+19
Комментарии38
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность