Search
Write a publication
Pull to refresh
43
0
Валерий Дмитриев @rotor

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

Send message

Подробно о корутинах в C++

Reading time10 min
Views39K
Здравствуйте, коллеги.

В рамках проработки темы С++20 нам в свое время попалась уже довольно старенькая (сентябрь 2018) статья из хаброблога «Яндекса», которая называется "Готовимся к С++20. Coroutines TS на реальном примере". Заканчивается она следующей весьма выразительной голосовалкой:



«Почему бы и нет», — решили мы и перевели статью Давида Пиларски (Dawid Pilarski) под названием «Coroutines introduction». Статья вышла чуть более года назад, но, надеемся, все равно покажется вам очень интересной.
Читать дальше →

Законы программирования

Reading time20 min
Views60K

Законы, теории, принципы и закономерности, полезные для разработчиков


Введение


Перевод репозитория github.com/dwmkerr/hacker-laws

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

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

Законы


Закон Амдала


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

Помоги компилятору помочь тебе

Reading time18 min
Views58K

Предисловие


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


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


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

Читать дальше →

Расстановка точек над датчиками газа серии MQ – глубокое понимание даташита и настройка

Reading time10 min
Views22K

После покупки копеечного датчика утечки газа появилось желание разобрать все по полочкам и узнать, что происходит внутри. Информации и статей по датчикам очень много, но большинство ограничено распиновкой стандартного китайского модуля, иногда принципов работы. Про относительно точное определение абсолютных значений информации нет. Забегая наперед скажу, что мы попробуем выжать все из даташита, включая: точные функции определения «попугаев», температурно-влажностной коррекции, некоторых возможностей селекции.
Читать дальше →

Перегрузка в C++. Часть I. Перегрузка функций и шаблонов

Reading time30 min
Views75K

C++ сложный и интересный язык, совершенствоваться в нем можно чуть ли не всю жизнь. В какой-то момент мне захотелось изучать его следующим образом: взять какой-то аспект языка, возможно довольно узкий, и разобраться с ним максимально глубоко и подробно. Такой подход в значительной степени был стимулирован замечательными книгами Скотта Мейерса, Герба Саттера и Стефана Дьюхэрста. Когда накопилось определенное количество материалов, решил познакомить с ними Хабровчан. Так появилась эта серия, которую я назвал «C++, копаем вглубь». Серия помечена как Tutorial, но ориентирована она все-таки не на начинающих, а скорее на intermediate уровень. Первая тема — это перегрузка в C++. Тема оказалась очень обширной и получилось три статьи. Первая статья посвящена перегрузке функций и шаблонов, вторая перегрузке операторов и третья перегрузке операторов new/delete. Итак, начнем копать.


Читать дальше →

Аналог ambilight из LED ленты WS2812, arduino и киндер-сюрприза

Reading time9 min
Views201K
Ambilight — разработанная Philips технология боковой подсветки пространства за телеящиком, которая, по мнению создателей, помогает зрителю еще больше погружаться в происходящее на экране.

В сети можно найти довольно много упоминаний о DIY Ambilight-like проектах, известны также коммерческие реализации подобного функционала в продуктах сторонних производителей / opensource-проектах, например, Lightpack.

Около года назад я практически случайно приобрел LED ленту на базе управляемых RGB диодов WS2812, рассчитывая задействовать её в каком-нибудь Arduino-проекте. Нехватка времени и противоречивая информация о возможности совместной работы с AVR контроллерами (сиречь Arduino) привела к тому, что реализация отодвинулась почти на год. Каково же было мое удивление, когда весь мини-проект по созданию Ambilight и организации его совместной работы с XBMC занял всего два вечера, т.е. 5-6 часов, включая поиск рабочего решения, написание скетча для arduino и конфигурационного скрипта к boblight, отладку их совместной работы, резку, пайку и монтаж ленты, а также прокладку 8м кабеля от arduino к телевизору.
Цель данного топика — поделиться с сообществом опытом и удивлением по поводу того, насколько все было просто, и задать направление желающим повторить это у себя дома. Мне кажется, что при наличии необходимых компонентов, повторение моего опыта «на столе» займет не более получаса.
А причем здесь киндер-сюрприз?

Умная дача #1. Модули Sonoff от ITEAD

Reading time6 min
Views87K


Когда-то, уже давным-давно, когда я ввязался в тему разработки электроники, на рынке «умно-домовых» устройств было пусто. Пусто — для меня. Мне хотелось использовать устройства, одновременно, и достаточно недорогие, и адекватно функциональные. Дешевые девайсы на 433-ем радиоканале для этого не подходили в силу своей простоты. У них нет обратной связи, нет шифрования. Легко можно прослушать команды управления в эфире и делать с «его» умным домом любые пакости. Нельзя быть уверенным, включилось ли реально устройство в результате посланной команды. Всё остальное имело неадекватный ценник.

С тех пор утекло много воды. Разработка диммера так и не дошла до финала. Не получилось устранить все проблемы с питанием — wi-fi модуль довольно прожорлив и недостаточно стабильно работает в нашей схеме включения. Пока разработка вяло текла, рынок заполнился светодиодными лампами, не диммируемыми в своем большинстве. Изменилось моё понимание умного дома. Вроде бы диммер в том его формате, как мной задумывался, не очень-то и нужен. Ибо «умный дом» должен работать сам, без выключателей. Изменился курс доллара, что осложнило разработку любого электронного проекта, а разработку диммера осложнило значительно. Устройство у него не простое, себестоимость высокая и зависит она от доллара практически напрямую. Поэтому проект диммера пока на паузе. До лучших времен. Или насовсем.

Своего решения всё не было и не было, а дача строилась. Если в квартире «умный дом» все-таки больше «погремушка», то за городом автоматика может сделать жизнь значительно более комфортной. Я регулярно искал возможные решения от других производителей. И все не находил. До недавнего времени.
Читать дальше →

Дж. Х. Рейнвотер «Как пасти котов»: не надо так, или негативные паттерны в руководстве

Reading time11 min
Views6.7K


Мы подходим к заключительным частям цикла статей по книге Рейнвотера для разработчиков, мутирующих в руководителей отдела. До сих пор речь шла о том, как все должно быть в идеальном мире; теперь пришло время обратить взгляд на то, как обстоят дела в прозаической реальности. Рейнвотер посвящает целую главу разбору порочных, разрушительных стратегий, которые лидеры-новички часто выбирают по наитию – почему они появляются, чем чреваты и, как собственно, действовать, если уже встал на кривую дорожку.
Читать дальше →

Кое-что об inode

Reading time5 min
Views93K
Периодически, с целью переезда в ЦРС собеседуюсь в разных крупных компаниях, в основном Питера и Москвы на должность DevOps. Обратил внимание, что во многих компаниях (во многих хороших компаниях, например в яндексе) задают два сходных вопроса:

  • что такое inode;
  • по каким причинам можно получить ошибку записи на диск (или например: почему может закончиться место на диске, суть одна).

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

Начну «снизу», т.е. с жесткого диска (флешки, SSD и прочие современные штуки отбросим, для примера рассмотрим любой 20 или 80 гиговый старый диск, т.к. там размер блока 512 байт).

Жесткий диск не умеет адресовать свое пространство побайтно, условно оно разбито на блоки. Нумерация блоков начинается с 0. (называется это LBA, подробности тут: ru.wikipedia.org/wiki/LBA)


Читать дальше →

DDoS-атака через социальную инженерию

Reading time6 min
Views17K


TL;DR Атакующий подменяет source ip на адрес вашего сервера и триггерит автоматические абузы. В результате клиента банят на хостинге за вредоносную активность, которой не было.

Комментарий от vdsina.ru:
Эта статья написана нашим клиентом, который перешёл к нам от крупного хостера после DDoS-атаки и любезно согласился поделиться этой историей.

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

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

В статье подробно разбирается этот вид атаки в реальном кейсе.
Читать дальше →

В поисках LD_PRELOAD

Reading time12 min
Views28K
Эта заметка была написана в 2014-м году, но я как раз попал под репрессии на хабре и она не увидела свет. За время бана я про неё забыл, а сейчас нашёл в черновиках. Думал было удалить, но авось кому пригодится.



В общем, небольшое пятничное админское чтиво на тему поиска «включенного» LD_PRELOAD.
Читать дальше →

Взлом с помощью Юникода (на примере GitHub)

Reading time3 min
Views25K
Юникод исключительно сложен. Мало кто знает все хитрости: от невидимых символов и контрольных знаков до суррогатных пар и комбинированных эмодзи (когда при сложении двух знаков получается третий). Стандарт включает 216 кодовых позиций в 17-ти плоскостях. По сути, изучение Юникода можно сравнить с изучением отдельного языка программирования.

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

Специалист по безопасности Джон Грейси продемонстрировал на примере GitHub баг проверки адреса электронной почты для восстановления забытого пароля. Подобные баги можно встретить и на других сайтах.
Читать дальше →

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

Reading time11 min
Views18K


Согласно отчёту Nilson о ситуации с банковскими картами и мобильными платежами, суммарный объём потерь в результате мошенничества ещё в 2016-м достиг $22,8 млрд, что на 4,4% больше, чем в 2015-м. Это только подтверждает необходимость для банков научиться распознавать мошенничество заранее, еще до того, как оно состоялось.
Читать дальше →

Ищем аномалии и предсказываем сбои с помощью нейросетей

Reading time11 min
Views17K

image


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


Что же делать? Здесь нам на помощь спешит искусственный интеллект. Речь в статье пойдет о предиктивном обслуживании (predictive maintenance). Этот подход активно набирает популярность. Написано большое количество статей, в том числе и на Хабре. Крупные компании вовсю используют такой подход для поддержки работоспособности своих серверов. Изучив большое количество статьей, мы решили попробовать применить этот подход. Что из этого вышло?

Читать дальше

Введение в рекомендательные системы

Reading time4 min
Views23K
В статье рассматриваются подходы по построению персонализированных товарных и контентных рекомендаций, и возможные кейсы использования.

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


Читать дальше →

Настройка LaTeX в Sublime Text

Reading time3 min
Views15K


Ниже представлено руководство по установке текстового редактора Sublime Text, с последующим добавлением в него возможности использования системы компьютерной вёрстки LaTeX. В качестве бонуса научим его понимать язык Julia.

Читать дальше →

Возможности современного JavaScript, о которых вы могли не знать

Reading time5 min
Views45K


Несмотря на то, что в последние семь лет я пишу на JavaScript почти каждый рабочий день, должен признаться, что уделяю мало внимания сообщениям о нововведениях от ES. Главные возможности вроде async/await и прокси — это одно, но ещё каждый год идёт поток мелких поэтапных изменений, которые не попадают в моё поле зрения, поскольку всегда находится что-то более важное для изучения.

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

Создание плагина для Clang Static Analyzer для поиска целочисленных переполнений

Reading time11 min
Views6.2K


Автор статьи: 0x64rem


Вступление


Полтора года назад у меня появилась идея реализовать свой фазер в рамках дипломной работы в университете. Я начала изучать материалы про графы потока управления, графы потока данных, символьное исполнение и т.д. Далее шёл поиск тулз, проба разных библиотек (Angr, Triton, Pin, Z3). Ничего конкретного в итоге не получилось, пока этим летом я не отправилась на летнюю программу Summer of Hack 2019 от Digital Security, где в качестве темы проекта мне было предложено расширение возможностей Clang Static Analyzer. Мне показалось, что эта тема поможет мне расставить по полкам мои теоретические знания, приступить к реализации чего-то существенного и получить рекомендации от опытных менторов. Далее я расскажу вам, как проходил процесс написания плагина и опишу ход своих мыслей в течение месяца стажировки.

Читать дальше →

Курс по C++ в CS центре, вторая часть

Reading time3 min
Views11K
Computer Science Center — это совместная инициатива Computer Science клуба при ПОМИ РАН, компании JetBrains и Школы анализа данных Яндекса.

Центр существует, чтобы дать возможность талантливым студентам и выпускникам развиваться в интересных им направлениях: Computer Science, Data Science или Software Engineering.

Курс по C ++ в двух частях в центре читает Валерий Михайлович Лесин, valery-l, преподаватель CS центра и совместной магистратуры ИТМО и JetBrains «Разработка программного обеспечения / Software Engineering», технический директор Simlabs.

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

Раскусим новые возможности языка и стандартной библиотеки: move семантику, bind/function, enable_if/if constexpr, сoroutines и другие. Посмотрим на некоторые характерные задачи: многопоточное программирование, использование библиотек в Windows и Linux и другие.

Приятного просмотра!
Смотреть видео

Методы отбора фич

Reading time10 min
Views87K
Эта статья — обзор, компиляция из нескольких источников, полный список которых я приведу в конце. Отбор фич (feature selection) — важная составляющая машинного обучения. Поэтому мне захотелось лучше разобраться со всевозможными его методами. Я получила большое удовольствие от поиска информации, чтения статей, просмотра лекций. И хочу поделиться этими материалами с вами. Я постаралась написать статью так, чтобы она требовала минимальных знаний в области и была доступна новичкам.
Читать дальше →

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity