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

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

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

Добавление WebAuthn в веб-приложение

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

Привет! В этой статье мы научимся добавлять WebAuthn в веб‑приложения со стороны frontend‑разработчика. WebAuthn представляет собой новый метод аутентификации, который обеспечивает более высокий уровень безопасности, заменяя устаревшие пароли и SMS‑подтверждения на аутентификацию на основе публичных ключей.

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

Поговорим об оптимизирующих компиляторах. Сказ седьмой: борьба с проверками диапазонов

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

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

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

Пишем свой QTableView с нуля

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

Итак жил был фреймворк Qt и последние 10 лет ничего в нем не менялось. И захотел один чел написать свой QTableView с нужным ему функционалом, а именно захотелось ему выводить ячейки в несколько рядов (по горизонтали) в одной строке. Ещё ему хотелось растягивать одну из ячеек по ширине двух других.

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

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

Феномен постоянной Капрекара. Таинственное «число великой радости» 6174

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

Чем же так занимательно число 6174? Казалось бы, это обычное натуральное чётное четырёхзначное число. Не лучше и не хуже, чем, скажем, соседние 6173 и 6175. Оно даже не является простым. Тем не менее, это число имеет своё собственное название — постоянная Капрекара. А ещё оно относится к так называемым «числам великой радости».

Давайте разбираться, что же в этом числе такого особенного. Займёмся несложными вычислениями...

Что же такого особенного в числе 6174?
Всего голосов 84: ↑79 и ↓5+98
Комментарии37

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

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

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

Пассивный DPI

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

Делаем web сервер из старого Android смартфона, без root

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

Главная идея была в том, чтобы проверить возможно ли из старого Android устройства сделать "полноценный" сервер с nginx, php-fpm, MariaDB и запустить на этом Wordpress. Оказывается можно и при этом с хорошим результатом.

Устройство: Xiaomi Mi 4c 2015 года, разблокирован разгрузчик, TWRP, Android 10 (Havoc OS 3.0), Gapps не устанавливались для экономии ресурсов, root отсутствует.

Читать далее
Всего голосов 23: ↑21 и ↓2+22
Комментарии19

Блеск и нищета std::format

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

Сравнительно недавно в stdlib плюсов появилось форматирование строк «как в питоне», а точнее, как в библиотеке fmt. И я, как смелый и отчаянный, решил этим воспользоваться. Возможно, аксакалы и настоящие разработчики скажут, что я всё делаю не так, и вообще не то, но я буду рад такой критике, если она поможет легче жить ;)

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

userver 1.0 — релиз фреймворка для IO-bound программ

Время на прочтение7 мин
Количество просмотров17K
С момента выхода ? userver в опенсорс прошло чуть больше года. За это время мы успели реализовать множество запросов от наших новых пользователей и обросли внушительной аудиторией в каналах поддержки. При этом поток вопросов, как пользоваться различными частями userver, значительно сократился, а это значит, наши улучшения документации принесли свои плоды.

image

Поэтому мы вышли из беты и сделали релиз!

Что нового в релизе? Зачем вообще нужен userver и какие существуют технологии для обеспечения надёжной работы серверных приложений? Можно ли воспользоваться крутыми C++ классами из userver, не используя при этом корутины? Какие дальнейшие планы? Ответы на все эти вопросы ждут вас под катом.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+60
Комментарии15

Кварц, который нужен всем. Как добывают и синтезируют необходимый для электроники минерал

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

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

С кварцем всё несколько иначе: его можно просто добывать, немного очищать, измельчать и пускать в дело. Ничего особенного, всё достаточно просто. Тем не менее добываемый кварц не всегда соответствует критериям, предъявляемым промышленностью — электронной и другими отраслями. Поэтому кварц научились ещё и синтезировать. Обо всём этом поговорим под катом. Надевайте строительные каски — и поехали!

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

Деплой приложения с nginx как по нодам

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

Привет, Хабр! В этом материале мы разберем деплой приложения на React, арендуем облачный сервер и настроим nginx. Здесь будет необходимый минимум для фронтенд-разработчика:

  • Заливка проекта на GitHub.
  • Аренда и настройка облачного сервера по SSH.
  • Настройка nginx для раздачи статических файлов.
  • Сжатие бандла.
  • Подключение домена.
  • Настройка HTTPS.
  • Настройка Docker.

Для этого материала также доступна видеоверсия.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+37
Комментарии12

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android

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

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
Читать дальше →
Всего голосов 81: ↑80 и ↓1+91
Комментарии38

Фантомный double в прошивках для ядер Cortex-M*

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

В последнее время появилось много микроконтроллеров на ядрах ARM Cortex-M*, которые поддерживают аппаратную реализацию математики плавающей запятой (FPU). В основном FPU работают с одиночной точностью (float) и её вполне достаточно для работы с сигналами, полученными с АЦП. FPU позволяет забыть о проблемах дискретизации и проблемах переполнения целочисленных вычислений. FPU быстр - все математические операции с одиночными float, кроме деления и взятия корня, занимают на Cortex-M4F один такт. Поэтому после перехода на Cortex-M4F мы вздохнули свободно и стали писать математику на float. Как же мы удивились, найдя в скомпилированном коде математические операции над double с программной, очень медленной эмуляцией.

В статье рассказывается, как обнаружить и исправить присутствие double в прошивках, где ядро аппаратно поддерживает тип float, но не поддерживает double.

Работа ведётся в среде IAR Embedded Workbench на примере реального кода на языке Си.

Читать далее
Всего голосов 65: ↑63 и ↓2+82
Комментарии25

Трудности маскирования текстового поля

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

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

Хороший UI/UX помогает пользователю избежать большинства таких проблем. Инструментов контроля огромное количество, сегодня расскажу про один их них — создание маски для поля ввода силами Javascript.

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

6.4 Устойчивость систем автоматического регулирования. Частотный критерий устойчивости Михайлова

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

Продолжаем лекции по управлению в технических устройствах (УТС). Данные лекции читаются в МГУТ им. Баумана. Автор лекций к.т.н. Козлов Олег Степанович, кафедра Ядерные Энергетические Установки, факультета машиностроения. За что ему огромное спасибо!

1. Введение в теорию автоматического управления.2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13

3. ЧАСТОТНЫЕ ХАРАКТЕРИСТИКИ ЗВЕНЬЕВ И СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ РЕГУЛИРОВАНИЯ. 3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ3.2. Типовые звенья систем автоматического управления регулирования. Классификация типовых звеньев. Простейшие типовые звенья3.3. Апериодическое звено 1–го порядка инерционное звено. На примере входной камеры ядерного реактора3.4. Апериодическое звено 2-го порядка3.5. Колебательное звено3.6. Инерционно-дифференцирующее звено3.7. Форсирующее звено.  3.8. Инерционно-интегрирующее звено (интегрирующее звено с замедлением)3.9. Изодромное звено (изодром)3.10 Минимально-фазовые и не минимально-фазовые звенья3.11 Математическая модель кинетики нейтронов в «точечном» реакторе «нулевой» мощности

4. Структурные преобразования систем автоматического регулирования.

5. Передаточные функции и уравнения динамики замкнутых систем автоматического регулирования (САР).

6. Устойчивость систем автоматического регулирования. 6.1 Понятие об устойчивости САР. Теорема Ляпунова. 6.2 Необходимые условия устойчивости линейных и линеаризованных САР. 6.3 Алгебраический критерий устойчивости Гурвица.

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

Сборка v4l-utils. Система сборки meson

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

Недавно для популярного пакета для работы с мультимедиа устройствами (в основном камерами) появилась возможность сборки через meson. В данной статье мы рассмотрим как это осуществить. Собирать будем в Ubuntu 22, но подойдёт и любой другой популярный современный дистрибутив.

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

Удивительное рядом. Как устроен буфер обмена в Windows и Linux

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров22K
Опенсорсная утилита CopyQ показывает содержимое буфера обмена на всех ОС и сохраняет историю

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

В некоторых случаях данные вообще нигде не сохраняются по нажатию Ctrl+C. И по нажатию Ctrl+V будет возвращён NULL. Shit happens, как говорится…
Читать дальше →
Всего голосов 52: ↑51 и ↓1+69
Комментарии20

Промышленная автоматизация и создание своих производственных линий как перспективная сфера приложения усилий

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

Наблюдая за тем, как самодельщики разрабатывают 100500-й вариант NAS с резервным питанием, мне подумалось, что стоит поднять гораздо более интересную тему, которая позволяет раскрыть свои навыки, реализуя увлекательные проекты, и предоставляет поистине неисчерпаемый источник сложных инженерных вызовов. А ведь мы все любим такое, не так ли? ;-)

Речь в этой статье пойдёт о построении любительских систем автоматизации, ведь если оглянуться вокруг, то множество процессов могут быть легко автоматизированы людьми, имеющими даже минимальное знание программирования и чуть-чуть дружащих с руками. Второе в принципе под вопросом, так как можно всё требующееся смоделировать на компьютере в 3D, в инженерном CAD, после чего отдать на лазерную резку, сварку и т. д. Хотя, если вы это умеете, это весьма невредно для глубинного понимания процессов.
Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии24

«Магическая константа» 0x5f3759df

Время на прочтение9 мин
Количество просмотров123K
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →
Всего голосов 212: ↑210 и ↓2+208
Комментарии188

Маленькие китайские хитрости, или Чоппер, но не мотоцикл

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

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

Однако сегодня я обнаружил более интересный кульбит: выпуск вполне себе крупным производителем (достаточно крупным, чтобы продукция его попала к основным дистрибьюторам, от LCSC до российских компаний) микросхемы, которая названием и частью функций мимикрирует под популярный чип Texas Instruments — в достаточной степени, чтобы во многих случаях «прокатило», а также чтобы не слишком опытный разработчик не заметил разницы.

Итак, встречайте: HGSEMI OPA376M, в девичестве — GS8591. К практически одноимённому (суффикса «M» у оригинала не бывает) и очень популярному TI OPA376 не имеющий никакого отношения, кроме цоколёвки и названия.

Читать далее
Всего голосов 72: ↑67 и ↓5+82
Комментарии12

Куда приводят поиски идеальной SCADA

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

Два года назад я написал статью “SCADA: в поисках идеала”. Идея была проста — превратить Qt Creator в среду для разработки SCADA. Теперь хочу рассказать, какой путь проделан и что получилось.



Удалось ли достигнуть идеального результата? — Разумеется, нет. На то он и идеал, что недостижим. Зато удалось заметно к нему приблизиться.

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

Информация

В рейтинге
5 538-й
Откуда
Йошкар-Ола, Марий Эл, Россия
Дата рождения
Зарегистрирован
Активность