Обновить
4
0

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

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

Фильтр Калмана — это легко

Время на прочтение18 мин
Охват и читатели122K


Много людей, в первый раз сталкивающихся в работе с датчиками, склонны считать, что получаемые показания — это точные значения. Некоторые вспоминают, что в показаниях всегда есть погрешности и ошибки. Чтобы ошибки в измерениях не приводили к ошибкам в функционировании системы в целом, данные датчиков необходимо обрабатывать. На ум сразу приходит словосочетание “фильтр Калмана”. Но слава этого “страшного” алгоритма, малопонятные формулы и разнообразие используемых обозначений отпугивают разработчиков. Постараемся разобраться с ним на практическом примере.
Читать дальше →

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

Время на прочтение3 мин
Охват и читатели11K

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

Читать и слушать

Про новинки в .NET 5 и C# 9.0

Время на прочтение21 мин
Охват и читатели87K
Добрый день.

В нашей компании .NET используется с самого его рождения. У нас в продуктиве работают решения, написанные на всех версиях фреймворка: от самой первой и до последней на сегодняшний день .NET Core 3.1.

История .NET, за которой мы пристально следим всё это время, творится на глазах: версия .NET 5, которую планируют релизить в ноябре, только что вышла в виде Release Candidate 2. Нас давно предупреждали, что пятая версия будет эпохальной: с нею закончится .NET-шизофрения, когда существовали две ветки фреймворка: классический и Core. Теперь они сольются в экстазе, и будет один сплошной .NET.

Вышедший RC2 уже можно начинать полноценно использовать – никаких новых изменений перед релизом больше не ожидается, будет только фикс найденных багов. Более того: на RC2 уже работает официальный сайт, посвящённый .NET.

А мы представляем вам обзор новшеств в .NET 5 и C# 9. Вся информация с примерами кода взята из официального блога разработчиков платформы .NET (а также ещё из массы источников) и проверена лично.
Читать дальше →

Аппаратный взлом жёсткого диска

Время на прочтение14 мин
Охват и читатели132K

Жёсткие диски: если вы читаете эту статью, то с большой вероятностью у вас есть одно или несколько таких устройств. Они довольно просты и, по сути, представляют собой набор 512-байтных секторов, пронумерованных возрастающими адресами, также называемыми LBA (Logical Block Address). Компьютер, к которому подключен жёсткий диск (hard drive, HD), может считывать и записывать данные в эти сектора. Обычно используется файловая система, абстрагирующая все эти сектора до файлов и папок.

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

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

Самый маленький офисный пакет в мире

Время на прочтение8 мин
Охват и читатели36K


Всем нам знаком традиционный офисный пакет — текстовый редактор, электронные таблицы, программа для создания презентаций, возможно, приложение для создания диаграмм или заметок. Всё это мы видим в Microsoft Office и в Google Docs. Все эти программы мощны и объёмны. Но каким будет минимальное количество кода, требуемое для создания офисного пакета?
Читать дальше →

Как генерируются UUID

Время на прочтение7 мин
Охват и читатели172K

Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.

Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Читать дальше →

Nullable Reference не защищают, и вот доказательства

Время на прочтение13 мин
Охват и читатели9.9K
image1.png

Хотели ли вы когда-нибудь избавиться от проблемы с разыменованием нулевых ссылок? Если да, то использование Nullable Reference типов — это не ваш выбор. Интересно почему? Об этом сегодня и пойдёт речь.
Читать дальше →

Скрипт настройки Windows 10. Часть II

Время на прочтение4 мин
Охват и читатели118K

Чуть больше года назад выкладывал свой скрипт по автоматизации настройки Windows 10. Давеча переписал Windows 10 Sophia Script в виде модуля на 10 000+ строк. Под катом — всегда самое интересное!

Читать далее

Архитектура интерпрайз-приложений может быть другой

Время на прочтение17 мин
Охват и читатели28K

image


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


Мне нравится перебирать архитектурные концепции. Всю жизнь я пытаюсь найти в области архитектуры и дизайна ПО что-то работающее и в то же время простое. Не требующее разрыва мозга для понимания и кардинальной смены парадигмы. Идей накопилось порядочно и я решил объединить лучшие из них в своём фреймворке — Reinforced.Tecture. Разработка таких штук даёт гигантское количество пищи для размышлений, я хочу ими поделиться.


Тексты про такие технические вещи обычно до ужаса нудные. Я честно постарался не нудить, поэтому мой текст получился слегка агрессивным. Если вам с этим норм и интересно почитать про архитектуры .NET-приложений — заходите.

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

Подготовка радиоэлементов к пайке

Время на прочтение3 мин
Охват и читатели18K

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

Читать далее

Стивен Вольфрам: кажется, мы близки к пониманию фундаментальной теории физики, и она прекрасна

Время на прочтение70 мин
Охват и читатели403K
В продолжение моего поста про вычислимую Вселенную я хочу представить вам свой перевод статьи Стивена Вольфрама, созданной в рамках его проекта The Wolfram Physics Project.


Неожиданное открытие


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

C++20. Coroutines

Время на прочтение33 мин
Охват и читатели79K

В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.


image

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

Проектные нормы в микроэлектронике: где на самом деле 7 нанометров в технологии 7 нм?

Время на прочтение12 мин
Охват и читатели132K
Современные микроэлектронные технологии — как «Десять негритят». Стоимость разработки и оборудования так велика, что с каждым новым шагом вперёд кто-то отваливается. После новости об отказе GlobalFoundries от разработки 7 нм их осталось трое: TSMC, Intel и Samsung. А что такое, собственно “проектные нормы” и где там тот самый заветный размер 7 нм? И есть ли он там вообще?


Рисунок 1. Транзистор Fairchild FI-100, 1964 год.

Самые первые серийные МОП-транзисторы вышли на рынок в 1964 году и, как могут увидеть из рисунка искушенные читатели, они почти ничем не отличались от более-менее современных — кроме размера (посмотрите на проволоку для масштаба).
Читать дальше →

ConfigureAwait: часто задаваемые вопросы

Время на прочтение20 мин
Охват и читатели170K
Привет, Хабр! Представляю вашему вниманию перевод статьи «ConfigureAwait FAQ» автора Стивен Тауб.

image

Async/await добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async/await работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).

ConfigureAwait — один из аспектов async/await, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.
Читать дальше →

Многопоточные классы

Время на прочтение5 мин
Охват и читатели20K
Доброго времени суток. Хочу поведать уважаемому хабрачитателю одну интересную вещь с которой пришлось столкнуться в недавнем времени. В одной из задач, стоявших передо мной, требовалось реализовать класс. В рамках этого класса должны выполняться некоторые вычисления. Для простоты, а также в целях сохранения работоспособности основного кода, решено было использовать потоки. Но все оказалось не так тривиально.
Читать дальше →

Многопоточный Observer на С++ (практика)

Время на прочтение12 мин
Охват и читатели9.1K
Есть много вариаций на тему данного паттерна, но большинство примеров не подходит для многопоточных приложений.
В этой статье я хочу поделится опытом применения паттерна в многопоточных приложениях и опишу основные проблемы, с которыми мне приходилось сталкиваться.
Цель данной стати — обратить внимание разработчиков на проблемы, с которыми можно столкнуться при создании многопоточных приложений. Выявить подводные камни в реализации коммуникации между компонентами в многопоточном приложении.
Если Вам необходимо готовое решение, обратите внимание на библиотеку Signals2, котрая включена в boost с мая 2009-го года.
Я не пытаюсь предоставить решение, которое можно было бы использовать в готовом виде. Но тем не менее, ознакомившись с материалом, можно обойтись без использования сторонних библиотек, в тех проектах, в которых они по каким-либо причинам не доступны или нежелательны (драйвера, низкоуровневые приложения и т.п.).
Читать дальше →

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

Время на прочтение11 мин
Охват и читатели153K

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

Читать далее

Гайд по Flight Simulator от пилотов: учимся управлять самолетом

Время на прочтение9 мин
Охват и читатели86K

Всем привет! В связи с выходом нового Microsoft Flight Simulator я и мои друзья решили написать для вас гайд по полетам в симуляторе.



Учиться мы будем на Cessna 152 – одном из самых востребованных самолетов. Он прост в управлении, прощает многие ошибки и весьма популярен в летных школах – сам автор учился летать именно на нем. Что немаловажно, встроенное в Microsoft Flight Simulator обучение также использует этот самолет.


Мы не будем грузиться теорией (поначалу), а перейдем сразу к практике. Статьи будут дополнять встроенные в MFS уроки.

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

Визуализация данных при отладке в Visual Studio Code

Время на прочтение2 мин
Охват и читатели19K


Вообще Debugger Visualizers для обычного Visual Studio — это очень старая тема (статья 2009 года), но не очень популярная. В большинстве случаев принято учить сразу дебажить, представляя процессы в голове, а штуки вроде сортировок и списков показываются на доске. В вебе часто визуальную часть предоставляет браузер, и все всем довольны. Но бывает, что списки или деревья в голове уже не умещаются, таблицы хочется отсортировать, а графики строить не выходя из среды отладки. Для всего этого и был создан плагин для VS Code — Debug Visualizer.
Читать дальше →

Что такое soft skills для инженера в 2020 году, зачем и как компании их проверяют на собеседованиях

Время на прочтение6 мин
Охват и читатели38K


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

Именно подобные вопросы позволяют оценить так называемые гибкие навыки (soft skills) инженеров. История собеседования в Facebook меня сильно заинтересовала, поэтому я решил изучить тему soft skills, их проверки и тренировки поподробнее. Бонусом прикладываю список полезных ресурсов и статей, на которые наткнулся в процессе подготовки материала. Поехали!
Читать дальше →

Информация

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