Pull to refresh
63
Karma
0
Rating

Погромист

Отладка драйвера Windows

System Programming *Development for Windows *
Tutorial

Работая со студентами я заметил, что нередко от изучения некоторой области отталкивает не столько сложность непосредственно разработки, сколько проблемы, связанные с настройкой рабочей среды и тестового окружения. Особенно остро эта проблема стоит при низкоуровневой разработке, в частности, драйверов ядра ОС Windows. Данная публикация содержит подробное описание процесса создания, запуска и отладки простейшего драйвера Windows.

Хочу ронять Windows в BSOD
Total votes 57: ↑57 and ↓0 +57
Views 12K
Comments 64

Гибкая индексация элементов в контейнере на С++ и при чём тут Boost.MultiIndex

Programming *C++ *
Sandbox

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

Мультииндекснуться
Total votes 26: ↑26 and ↓0 +26
Views 5.5K
Comments 22

Аналитическое вычисление производных на шаблонах C++

Abnormal programming *C++ *
Тут на днях писали про аналитическое нахождение производных, что напомнило мне об одной моей маленькой библиотечке на C++, которая делает почти то же, но во время компиляции.


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

using Formula_t = decltype (k * (_1 - r0) / (_1 + r0) * (g0 / (alpha0 - logr0 / Num<300>) - _1));    // сама формула
const auto residual = Formula_t::Eval (datapoint) - knownValue;    // регрессионный остаток

// производные по параметрам:
const auto dg0 = VarDerivative_t<Formula_t, decltype (g0)>::Eval (datapoint);
const auto dalpha0 = VarDerivative_t<Formula_t, decltype (alpha0)>::Eval (datapoint);
const auto dk = VarDerivative_t<Formula_t, decltype (k)>::Eval (datapoint);

Вместо крокодилов, которые получатся, если брать частные производные функции на картинке вначале (вернее, некоторого её упрощённого варианта, но он выглядит не так страшно).

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

Под катом — небольшое описание, как оно там всё работает.
Читать дальше →
Total votes 80: ↑77 and ↓3 +74
Views 21K
Comments 28

Заговор молчания: за что издатели так ненавидят эмуляторы консолей?

Western Digital corporate blog Copyright History of IT Games and game consoles

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

Раскрыть заговор!
Total votes 49: ↑46 and ↓3 +43
Views 21K
Comments 44

Как посчитать синус быстрее всех на хабре

RUVDS.com corporate blog C++ *Algorithms *C# *Mathematics *
Tutorial

Несмотря на свою кажущуюся банальность, темы о вычислении синуса достаточно регулярно появляются на хабре. И каждый раз их авторы или делают сомнительные утверждения, или получают сомнительные результаты. Не в силах более терпеть, я тоже решил поучаствовать и внести свой, не менее сомнительный вклад в этот вопрос.
Читать дальше →
Total votes 93: ↑92 and ↓1 +91
Views 27K
Comments 41

Безопасное использование C++

PVS-Studio corporate blog Information Security *Programming *C++ *Google Chrome
Translation

От переводчика. Данный текст является переводом документа Safer Usage Of C++, выложенного в общий доступ командой Chromium/Chrome из компании Google. Текст активно обсуждался на Reddit, и команда PVS-Studio решила, что аудитории Habr-а может быть интересно познакомиться с его русскоязычным вариантом. Для перевода использован текст от 20 сентября 2021, и на момент его чтения он может отличаться от текста по ссылке.

Читать дальше →
Total votes 26: ↑21 and ↓5 +16
Views 14K
Comments 12

Бывший проектировщик микросхем для Военно-Воздушных Сил США расскажет в Cколково как верифицировать FIFO

FPGA *Programming microcontrollers *Manufacture and development of electronics *Computer hardware Electronics for beginners

Если вы изучили начала цифровой схемотехники и компьютерной архитектуры по книжке Харрис & Харрис и потом вознамерились пойти собеседоваться на позицию проектировщика микросхем в Apple или NVidia, то вы интервью не пройдете. Посколько вы наверняка получите вопрос про реализацию в хардвере очередей FIFO, а это в Харрис & Харрис не описано.

Хуже того, даже если вы возьмете книжку Digital Design by William Dally & Curtis Harting, которую используют для обучения студентов в Стенфорде, и прочтете ее от корки до корки, то у вас все равно мало шансов, потому что, хотя FIFO там и есть, но в очень базисной форме, а контроль потока данных заканчивается на скид-буферах.

А что же хотят электронные компании?
Total votes 26: ↑25 and ↓1 +24
Views 9.6K
Comments 24

Как симулировать плохую сеть под Linux, macOS и Windows

ITSumma corporate blog IT systems testing *Web services testing *Mobile applications testing *Software
Tutorial

Clumsy 0.2

Все распределённые системы — базы данных, мобильные приложения, корпративные SaaS и так далее — следует разрабатывать с учётом сбоев. Например, компания Stripe во время тестов убивала случайные инстансы — и смотрела, что произойдёт. Компания Netflix рандомно уничтожала инстансы прямо в продакшне с помощью программы Chaos Monkey (проект Simian Army).

Симуляция сбоев — необходимое средство тестирования. Проблема в том, что ситуации не делятся только на чёрное и белое, Есть огромная «серая» зона, где сбои явно не выражены, а проявляются в плохих условиях сети: ненадёжное соединение, узкий канал, потери пакетов, высокая задержка, дубликаты пакетов и так далее.
Читать дальше →
Total votes 45: ↑45 and ↓0 +45
Views 16K
Comments 5

C++17. Функция стандартной библиотеки std::launder и задача девиртуализации

Programming *C++ *
Tutorial
✏️ Technotext 2021

В этой статье мы попробуем разобраться с одним из самых неоднозначных и непонятных нововведений стандарта C++17 — функцией стандартной библиотеки std::launder. Мы посмотрим на std::launder с другой стороны, посмотрим на источник. Разберем что лежит в основе функции на примере решения задачи девиртуализации и реализации виртуальных указателей в LLVM.


Читать дальше →
Total votes 70: ↑70 and ↓0 +70
Views 21K
Comments 72

Как удалить «неудаляемые» приложения со смартфона

VDSina.ru corporate blog Development for Android *Smartphones Software


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

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

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

Всё это надо зачистить.
Читать дальше →
Total votes 190: ↑179 and ↓11 +168
Views 203K
Comments 202

std::atomic. Модель памяти C++ в примерах

Programming *C++ *

Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

Читать далее
Total votes 52: ↑52 and ↓0 +52
Views 76K
Comments 39

Возможности SQLite, которые вы могли пропустить

SQL *SQLite *
Если вы используете SQLite, но не следите за его развитием, то возможно некоторые вещи, позволяющие сделать код проще, а запросы быстрее, прошли незамеченными. Под катом я постарался перечислить наиболее важные из них.
Читать дальше →
Total votes 76: ↑76 and ↓0 +76
Views 32K
Comments 35

Как Microsoft из монстра эпохи доткомов превратилась в корпорацию-мечтателя

VDSina.ru corporate blog Research and forecasts in IT *Reading room History of IT IT-companies
Многие не любят Microsoft за ее непростое прошлое и решения, которые принимались Гейтсом, Балмером и даже Наделлой, когда они руководили компанией в разные годы. Microsoft сделала много ошибок за десятилетия своего существования, но в отличие от большинства людей, причастных к IT-индустрии, я никогда по-настоящему не испытывал ненависти к этой компании. Ну все ненавидят Microsoft, да и я буду ненавидеть, что уж тут, отбиваться от коллектива?



В этот момент многие олдовые фанаты Linux потянулись за ружьем, но давайте будем объективны: в последнее десятилетие Microsoft дает все меньше поводов для ненависти. Да, Windows 10 с каждым патчем все больше и больше выводит из себя. Да, Microsoft бросила на произвол судьбы малое, но крайне преданное сообщество фанатов их мобильной платформы.

Но при этом я, как человек, внимательно наблюдающий за новыми продуктами и вообще, за новостями компании, понимаю, что руководство Сатьи Наделлы войдет в историю Microsoft, как эпоха мечтателей и визионеров. И сейчас я постараюсь объяснить, почему я пришел к подобным выводам.
Total votes 67: ↑63 and ↓4 +59
Views 19K
Comments 33

Коды избыточности: простыми словами о том, как надёжно и дёшево хранить данные

Яндекс corporate blog Data storage *Data storages *Distributed systems *


Так выглядит избыточность


Коды избыточности* широко применяются в компьютерных системах для увеличения надёжности хранения данных. В Яндексе их используют в очень многих проектах. Например, применение кодов избыточности вместо репликации в нашем внутреннем объектном хранилище экономит миллионы без снижения надёжности. Но несмотря на широкое распространение, понятное описание того, как работают коды избыточности, встречается очень редко. Желающие разобраться сталкиваются примерно со следующим (из Википедии):



Меня зовут Вадим, в Яндексе я занимаюсь разработкой внутреннего объектного хранилища MDS. В этой статье я простыми словами опишу теоретические основы кодов избыточности (кодов Рида — Соломона и LRC). Расскажу, как это работает, без сложной математики и редких терминов. В конце приведу примеры использования кодов избыточности в Яндексе.


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


* Под термином «коды избыточности» в статье подразумевается инженерный термин «erasure codes».

Читать дальше →
Total votes 62: ↑58 and ↓4 +54
Views 25K
Comments 32

Почему в Docker не работает Strace

ITSumma corporate blog Configuring Linux *System administration *Virtualization *
Translation
Когда я редактировала страницу о возможностях контейнеров для журнала «How Containers Work», мне потребовалось объяснить, почему в Docker не работает strace. Вот что случалось при запуске strace в Docker-контейнере на моем ноутбуке:

$ docker run  -it ubuntu:18.04 /bin/bash
$ # ... install strace ...
root@e27f594da870:/# strace ls
strace: ptrace(PTRACE_TRACEME, ...): Operation not permitted

strace работает через системный вызов ptrace, поэтому без разрешения для ptrace ничего не заработает! Но это легко исправить, и на моем ноутбуке я все сделала вот так:

docker run --cap-add=SYS_PTRACE  -it ubuntu:18.04 /bin/bash

Но мне было интересно не решить проблему, а разобраться, почему эта ситуация вообще возникает. Так почему же strace не работает, а --cap-add=SYS_PTRACE все исправляет?
Читать дальше →
Total votes 46: ↑45 and ↓1 +44
Views 10K
Comments 4

Энтузиасты запустили онлайн-портал для игры в Counter-Strike 1.6 в браузере

Browsers Games and game consoles


Более года назад команда энтузиастов запустила портал CS-Online.club, где можно сразиться с друзьями и противниками со всего мира в классический и нестареющий шутер Counter-Strike 1.6. Причем для этого пользователям не нужно устанавливать Steam, покупать саму игру, регистрироваться на сайте или скачивать дистрибутив. Для доступа на многочисленные игровые сервера портала пользователю необходим только браузер. В настоящий момент работоспособность ресурса перед публикацией была проверена в Linux и Firefox.

Новый домен портала — play-cs.com/ru/servers.
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views 38K
Comments 18

Анализатор исходного кода Microsoft Application Inspector

Information Security *Reverse engineering *Web services testing *

image

Компания Microsoft выпустила «Microsoft Application Inspector», кросс-платформенный опенсорсный (!) инструмент для анализа исходного кода.

Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Views 16K
Comments 26

15 лучших и крупнейших библиотек иконок

Edison corporate blog
Translation


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

Сразу уточняем: это не 15 самых лучших библиотек, а 15 из лучших. Разумеется, есть и другие, не менее замечательные, о которых я не упомянул или не знаю.
И, нет, это не рейтинг — список маркированный, а не нумерованный.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views 29K
Comments 12

ChaiScript — скриптовый язык для C++

Programming *C++ *Game development *
Когда возникает потребность внедрить скриптовый язык в проект на C++, первым делом большинство людей вспоминает Lua. В этой статье его не будет, я расскажу о другом, не менее удобном и легком в освоении языке под названием ChaiScript.

image
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Views 13K
Comments 33

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

HFLabs corporate blog Information Security *Website development *Algorithms *CRM systems *


Реквизиты паспорта — не просто набор цифр, в них закодирован вагон информации. Если правильно расшифровывать и сопоставлять реквизиты, подозрительные документы мгновенно всплывут на поверхность. Продукты HFLabs уже 14 лет проверяют клиентские данные в банках, страховых, телекомах и другом крупном бизнесе. Расскажу, как мы распознаем ошибки в российских паспортах.
Читать дальше →
Total votes 134: ↑132 and ↓2 +130
Views 175K
Comments 255

Information

Rating
Does not participate
Registered
Activity