• Как одним движением сжечь 10000$ и получить удар током


      Представим себе в сущности довольно-таки заурядную ситуацию: у вас сломался сетевой источник питания. Вы берете в руки мультиметр и измеряете напряжение на входе и выходе источника. На входе у вас честные 230 В переменного тока из розетки, а на выходе по нулям. Вы знаете, что ваш источник питания – импульсный, и вы в курсе про то, что транзисторами источника управляет ШИМ-контроллер, который очень легко идентифицируется на плате.
      На столе у вас стоит новенький осциллограф Tektronix DPO 7254 или какой-нибудь LeCroy WavePro 7300A ценою более 10000$, и вы решаете посмотреть с его помощью сигналы ШИМ-контроллера, чтобы диагностировать его исправность или неисправность. На щупе осциллографа написано, что его максимально допустимое напряжение равно 1000 В, это с хорошим запасом больше напряжения в розетке. Непосредственно на самом осциллографе рядом с разъемами для подключения щупов написана цифра 400 V, кроме того, у вас щуп с делителем 1:100, что тоже вселяет уверенность, что все будет в порядке. Вы включаете осциллограф и пробуете подключить его щуп к плате источника питания, однако, как только вы касаетесь щупом осциллографа платы источника питания, проскакивает искра и раздается громкий ба-бах. Экран вашего новенького осциллографа безжизненно потухает, сам осциллограф не реагирует ни на какие кнопки, а комнату заполняет характерный запах сгоревшей электроники. Что же произошло? Почему сгорел осциллограф и как такого избежать? Обо всем этом читайте под катом.
      Читать дальше →
    • Тариф «100к+», или как вельми зело огорчить спамера


        Уже не впервые сталкиваюсь, что читатели Хабра не все поголовно умеют правильно бороться со спамом. И я не про SpamAssasin, «Ктозвонил» и прочие приложения для фильтрации информационного мусора, а про несложную, но весьма доставляющую всем сторонам процесса подачу жалобы в ФАС.

        Давайте расскажу, как буквально за 15 минут не отрываясь от любимого компьютера подключить спамеру задораздирающий тариф линейки «Административный»: «Административный 100к», «Административный 150к» и вплоть до «Административный 500к» – как повезет.
        Читать дальше →
      • Как удалить «неудаляемые» приложения со смартфона



          Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

          Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

          Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

          Всё это надо зачистить.
          Читать дальше →
        • Перевод числа в строку с помощью FPU

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

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

            Читать далее
          • Эксперт обнаружил критическую уязвимость в Windows 10. Однострочная команда повреждает NTFS на диске



              По информации Bleeping Computer, эксперт Джонас Л. предупредил о серьезной уязвимости в драйвере Windows NTFS во всех версиях Windows 10, начиная с 1803 и выше, включая 20H2.

              Уязвимость можно активировать однострочной командой. Она мгновенно производит повреждение файловой системы NTFS на жестком диске. Сразу после ее отработки Windows 10 предлагает пользователю перезагрузить ПК, чтобы восстановить поврежденные записи и исправить индексацию на диске.

              Данная уязвимость доступна не только из под администратора, ее может использовать любой пользователь Windows 10 с низкими привилегиями в системе. Уязвимость можно активировать удаленно, а также встраивать в HTML. В некоторых системах после ее отработки повреждается MFT.
              Читать дальше →
            • Создаем Swift Package на основе C++ библиотеки

              Данная статья поможет вам создать свой первый Swift Package. Мы воспользуемся популярной C++ библиотекой для линейной алгебры Eigen, чтобы продемонстрировать, как можно обращаться к ней из Swift. Для простоты, мы портируем только часть возможностей Eigen.

              Читать далее
            • Давайте напишем командную оболочку Linux

              • Tutorial

              Всем привет!

              Хочу поделиться своим опытом написания собственной командной оболочки Linux используя Posix API. Усаживайтесь поудобнее.

              Что должен уметь наша командная оболочка?

              1. Запуск процессов в foreground и background режиме

              2. Завершение background процессов

              3. Поддержка перемещения по директориям

              Читать далее
            • Пишем макет 16-битного ядра на C/C++

              • Перевод


              В первой и второй статьях я лишь коротко представил процесс написания загрузчика на ассемблере и C. Для меня это было хоть и непросто, но в то же время интересно, так что я остался доволен. Однако создания загрузчика мне показалось мало, и я увлекся идеей его расширения дополнительной функциональностью. Но так как в итоге размер готовой программы превысил 512 байт, то при попытке запуска системы с несущего ее загрузочного диска я столкнулся с проблемой “This is not a bootable disk”.
              Читать дальше →
              • +36
              • 5,6k
              • 5
            • Vulkan. Руководство разработчика. Слои валидации

              • Перевод
              • Tutorial
              Я переводчик из компании CG Tribe в Ижевске, и здесь я делюсь переводом руководства к Vulkan API. Ссылка на источник — vulkan-tutorial.com.

              Эта публикация является продолжением предыдущей публикации "Vulkan. Руководство разработчика. Рисуем треугольник", она посвящена переводу главы Validation layers.

              Содержание
              1. Вступление

              2. Краткий обзор

              3. Настройка окружения

              4. Рисуем треугольник

              1. Подготовка к работе
              2. Отображение на экране
              3. Основы графического конвейера (pipeline)
              4. Отрисовка
              5. Повторное создание цепочки показа

              5. Буферы вершин

              1. Описание
              2. Создание буфера вершин
              3. Staging буфер
              4. Буфер индексов

              6. Uniform-буферы

              1. Дескриптор layout и буфера
              2. Дескриптор пула и sets

              7. Текстурирование

              1. Изображения
              2. Image view и image sampler
              3. Комбинированный image sampler

              8. Буфер глубины

              9. Загрузка моделей

              10. Создание мип-карт

              11. Multisampling

              FAQ
              Читать дальше →
            • Да ты гонишь! Почему на одних конфигурациях оперативка разгоняется выше, чем на других



                Разгон памяти, дело добровольное. Как понять, от чего зависит разгон памяти, какие есть тонкости в подборе комплектующих и как «прогнать» память, чтобы было за нее не стыдно!
                Изучение, анализ и подбор – три составляющих успеха в разгоне памяти. Чтобы начать разгонять память без погружения в пучины технических знаний, необязательно быть специалистом. Половина успеха зависит от платформы, вторая часть – это правильный выбор ранговости, количество модулей и частот памяти Kingston и HyperX.
                Читать дальше →
              • Хеш-функция, что это такое?

                  Приветствую уважаемого читателя!

                  Сегодня я хотел бы рассказать о том, что из себя представляет хеш-функция, коснуться её основных свойств, привести примеры использования и в общих чертах разобрать современный алгоритм хеширования SHA-3, который был опубликован в качестве Федерального Стандарта Обработки Информации США в 2015 году.

                  Читать далее
                • Использование SEH в 32 разрядных приложениях Windows с компилятором Mingw-W64

                    Что такое SEH


                    Из всех механизмов, предоставляемых операционными системами семейства Windows, возможно наиболее широко используемым, но не полностью документированным, является механизм структурной обработки исключений (он же Structured Exception Handling, или просто – SEH). Структурная обработка исключений — это сервис, предоставляемый операционной системой, механизм обработки программных и аппаратных исключений в операционной системе Microsoft Windows, позволяющий программистам управлять обработкой исключений. Исключение — это событие при выполнении программы, которое приводит к её ненормальному или неправильному поведению.

                    Вся документация по SEH, которую вы, вероятно, найдете, описывает одну лишь компиляторно-зависимую оболочку, созданную функциями библиотеки времени выполнения (Run-Time-Library, RTL) вокруг реализации SEH операционной системы. В ключевых словах _try, _finally, или _except, нет ничего магического. Группы разработчиков из Microsoft, занимающиеся разработкой операционных систем и компиляторов, определили эти ключевые слова, и то, что они делают. Другие поставщики компиляторов просто поддержали эту семантику. Видимые программисту инструменты SEH уровня компилятора призваны скрыть базовый механизм SEH уровня операционной системы, что позволяет не обнародовать детали функционирования последнего. Основные детали базового механизма SEH уровня ОС будут рассмотрены в этой статье. В статье отражены личные взгляды и предпочтения автора.
                    Читать дальше →
                  • Пишем простой Path Tracer на старом добром GLSL

                    • Tutorial

                    На волне ажиотажа вокруг новых карточек от Nvidia с поддержкой RTX, я, сканируя хабр в поисках интересных статей, с удивлением обнаружил, что такая тема, как трассировка путей, здесь практически не освящена. "Так дело не пойдет" - сказал я и решил, что неплохо бы запилить что-нибудь небольшое из этой темы, да и так, чтобы другим полезно было. Тут как кстати API собственного движка нужно было протестировать, поэтому решил - запилю-ка я свой простенький path-tracer прямо во фрагментном шейдере. Что из этого вышло, думаю вы уже догадались по превью к этой статье

                    Читать далее
                  • Создаем EXE

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

                    Сейчас он способен собрать Hello World, но в этой статье я хочу рассказать не про парсинг и внутреннее устройство компилятора, а про такую важную часть как побайтовая сборка exe файла.
                    Читать дальше →
                  • Основные принципы C++: Правила выражений и операторов

                    • Перевод
                    Бобра!

                    Что ж, мы плавно выходим на старт второго потока группы «Разработчик С++» и разбираем интересные материалы, которые накопились у преподавателя в свободное от работы и преподавания время. Сегодня рассмотрим (а потом и продолжим) серию материалов, где разбираются отдельные пункты С++ Core Guidelines.

                    Поехали.

                    В C++ Core Guidelines много правил, посвященных выражениям и операторам. Если быть точным, то более 50 правил посвящено объявлениям, выражениям, операторам и арифметическим выражениям.



                    *перевод
                    Информативные названия

                    Оптимальная длина переменных

                    • Не должны быть слишком длинными (maximimNumberOfPointsInModernOlympics.) или слишком короткими (например, x, x1)
                    • Длинные названия сложно печатать, короткие названия недостаточно информативны..
                    • Дебажить программы с названиями от 8 до 20 символов гораздо проще
                    • Гайдлайны не заставляют вас срочно менять названия переменных на имена из 9-15 или 10-16 символов. Но если вы найдете в своем коде более короткие названия, убедитесь, что они достаточно информативны.

                    Слишком длинные: numberOfPeopleOnTheUsOlympicTeam; numberOfSeatsInTheStadium; maximumNumberOfPointsInModernOlympics
                    Слишком короткие: n; np; ntmn; ns; nslsd; m; mp; max; points
                    В самый раз: numTeamMembers, teamMembersCount

                    Читать дальше →
                  • Лямбды: от C++11 до C++20. Часть 2

                    • Перевод
                    Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут.



                    В первой части серии мы рассмотрели лямбды с точки зрения C++03, C++11 и C++14. В этой статье я описал побуждения, стоящие за этой мощной фичей C++, базовое использование, синтаксис и улучшения в каждом из языковых стандартов. Я также упомянул несколько пограничных случаев.
                    Теперь пришло время перейти к C++17 и немного заглянуть в будущее (очень близкое!): C++20.
                    Читать дальше →
                  • Введение в регулярные выражения в современном C++

                    • Перевод

                    Регулярные выражения (Regular expressions или, вкратце, regex — регулярки) — это пока что непопулярная и недооцененная тема в современном C++. Но в то же время разумное использование регулярных выражений может избавить вас от написания множества строчек кода. Если у вас уже есть какой-никакой опыт работы в индустрии, но вы не умеете использовать регулярные выражения — вы разбазариваете 20-30% своей продуктивности. Я настоятельно рекомендую вам освоить регулярные выражение, так как это единовременная инвестиция в себя (по известному принципу “learn once, write anywhere”).

                    Читать далее
                  • Пишем программу 3D-моделирования в 500 строках кода

                    • Перевод
                    image

                    Введение


                    Люди от природы креативны. Мы постоянно проектируем и создаём новые, полезные и интересные вещи. Сегодня мы пишем ПО, помогающее процессу проектирования и творчества. Программы САПР (Computer-aided design, CAD) позволяют творцам проектировать здания, мосты, графику видеоигр, чудовищ для фильмов, объектов для 3D-печати и множество других вещей перед созданием физической версии проекта.

                    По своей сути, инструменты CAD являются способом абстрагирования трёхмерного проекта в нечто, что можно просматривать и редактировать на двухмерном экране. Чтобы справляться со своей задачей, инструменты CAD должны обеспечивать три основных элемента функциональности. Во-первых, они должны иметь структуру данных, описывающую проектируемый объект: это то, как компьютер понимает создаваемый пользователем трёхмерный мир. Во-вторых, инструмент CAD должен обеспечивать отображение проекта на экране пользователя. Пользователь проектирует физический объект с тремя измерениями, но экран компьютера имеет всего два измерения. Инструмент CAD должен моделировать способ восприятия нами объектов и отрисовывать их на экране так, чтобы пользователь смог понять все три измерения объекта. В-третьих, CAD должен предоставлять возможность взаимодействия с проектируемым объектом. Пользователь должен быть способен дополнять или модифицировать проект, чтобы создать нужный результат. Кроме того, все инструменты должны иметь возможность сохранения и загрузки проектов с диска, чтобы пользователи могли сотрудничать, обмениваться своей работой и сохранять её.
                    Читать дальше →
                  • Vulkan. Руководство разработчика. Рисуем треугольник

                    • Перевод
                    • Tutorial
                    Я переводчик в компании CG Tribe в Ижевске, и я продолжаю выкладывать перевод руководства к Vulkan API. Ссылка на источник — vulkan-tutorial.com.

                    Эта публикация посвящена переводу раздела Drawing a triangle, а именно подразделу Setup, главам Base code и Instance.

                    Содержание
                    1. Вступление

                    2. Краткий обзор

                    3. Настройка окружения

                    4. Рисуем треугольник

                    1. Подготовка к работе
                    2. Отображение на экране
                    3. Основы графического конвейера (pipeline)
                    4. Отрисовка
                    5. Повторное создание цепочки показа

                    5. Буферы вершин

                    1. Описание
                    2. Создание буфера вершин
                    3. Staging буфер
                    4. Буфер индексов

                    6. Uniform-буферы

                    1. Дескриптор layout и буфера
                    2. Дескриптор пула и sets

                    7. Текстурирование

                    1. Изображения
                    2. Image view и image sampler
                    3. Комбинированный image sampler

                    8. Буфер глубины

                    9. Загрузка моделей

                    10. Создание мип-карт

                    11. Multisampling

                    FAQ

                    Политика конфиденциальности


                    Базовый код




                    Общая структура


                    В предыдущей главе мы рассказали, как создать проект для Vulkan, правильно его настроить и протестировать с помощью фрагмента кода. В этой главе мы начнем с самых азов.
                    Читать дальше →
                    • +13
                    • 3,4k
                    • 2
                  • Современный CMake: 10 советов по улучшению скриптов сборки

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

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