Как стать автором
Обновить
31
0
Dmitrii Sharikhin @Dima_Sharihin

Embedded SW Engineer

Линус Торвальдс, Бьёрн Страуструп и Брендан Грегг контрибьютят в мой хобби-проект. Зачем?

Время на прочтение 8 мин
Количество просмотров 69K
Информационная безопасность *Git *GitHub *

Смотрите сами: вот проект, вот история коммитов.



Список контрибьюторов с главной страницы репозитория:



Ссылки на аватарках ведут на странички профилей реальных людей.


Всё на месте. Кроме плашечки "Verified" как здесь:





Знатоки Git и GPG, не торопитесь проматывать ленту: эта статья не про необходимость подписывать свои коммиты. Она про неявные допущения, которые мы делаем, пользуясь "интуитивно-понятными" монстрами GitHub и GitLab и доверяя им контроль доступа к нашим репозиториям.

Читать дальше →
Всего голосов 209: ↑205 и ↓4 +201
Комментарии 67

Внутренняя кухня промышленного дизайна: от эскиза до продукта в коробке

Время на прочтение 9 мин
Количество просмотров 5.8K
Прототипирование *Управление продуктом *Производство и разработка электроники *Дизайн 3D-принтеры


Бывает, на первой встрече клиенты говорят «нам нужна только картинка», «сэкономим на дизайне», «нам просто накинуть идею», «ой, да что там делать». Мало кто представляет себе полную картину того, что происходит на внутренней кухне дизайнера, тем более промышленного. В этой статье мы раскроем весь процесс — от первых эскизов (а даже раньше) до запуска серийного производства — и объясним, почему промдизайн — это не просто картинка.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 3

CreateRemoteThread для Linux

Время на прочтение 46 мин
Количество просмотров 13K
Ненормальное программирование *Системное программирование *C *Разработка под Linux *
Туториал

Мицуха несёт новые потокиВ WinAPI есть функция CreateRemoteThread, позволяющая запустить новый поток в адресном пространстве другого процесса. Её можно использовать для разнообразных DLL-инъекций как с нехорошими целями (читы в играх, кража паролей, и т. д.), так и для того, чтобы на лету исправить баг в работающей программе, или добавить плагины туда, где они не были предусмотрены.


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


Я подробно расскажу о том, как с помощью спецификации ELF, некоторого знания архитектуры x86_64 и системных вызовов Linux написать свой маленький кусочек отладчика, способный загрузить и исполнить произвольный код в уже запущенном и работающем процессе.


Для понимания текста потребуются базовые знания о системном программировании под Linux: язык Си, написание и отладка программ на нём, осознание роли машинного кода и памяти в работе компьютера, понятие системных вызовов, знакомство с основными библиотеками, навык чтения документации.

Читать дальше →
Всего голосов 76: ↑75 и ↓1 +74
Комментарии 27

Облысение: Теория и практика лечения, ч.2 «Даже у простаты есть гланды, простагландины»

Время на прочтение 5 мин
Количество просмотров 24K
Здоровье

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


image

Использование простагландинов, либо препаратов их блокирующих, является довольно новой (и экспериментальной) формой лечения в борьбе с облысением, которая может стать как альтернативой для миноксидил-финастерид терапии так и дополнении к ней.
Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 32

Оптимизация энергопотребления STM32: практическое руководство

Время на прочтение 19 мин
Количество просмотров 46K
Производство и разработка электроники *Электроника для начинающих
Привет, Хабр!

В сети довольно много статей про работу микроконтроллеров STM32 в энергоэффективных устройствах — как правило, это устройства на батарейном питании — однако среди них прискорбно мало разбирающих эту тему за пределами перечисления энергосберегающих режимов и команд SPL/HAL, их включающих (впрочем, та же претензия относится к подавляющему большинству статей про работу с STM32).

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

Восполнять данный пробел мы будем на примере STM32L1 — контроллера весьма популярного, достаточно экономичного и при этом имеющего некоторые специфические именно для этой серии проблемы. Практически всё сказанное будет также относиться к STM32L0 и STM32L4, ну и в части общих проблем и подходов — к другим контроллерам на ядрах Cortex-M.



Практический результат должен выглядеть примерно так, как на фотографии выше (и да, о применимости мультиметров и других средств измерения к подобным задачам тоже поговорим).
Читать дальше →
Всего голосов 95: ↑92 и ↓3 +89
Комментарии 95

Антипаттерны тестирования ПО

Время на прочтение 31 мин
Количество просмотров 79K
Тестирование IT-систем *TDD *Отладка *Тестирование веб-сервисов *Управление разработкой *
Перевод

Введение


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

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

Терминология


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


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

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

Деловая переписка на английском языке: фразы и советы

Время на прочтение 18 мин
Количество просмотров 537K
Блог компании Нетология Карьера в IT-индустрии
Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

Задача становится сложнее, если вы общаетесь на неродном английском языке с представителями других культур. В статье я поделюсь, на что в этом случае обратить внимание, как избежать ошибок и достичь взаимопонимания с иностранными коллегами и партнерами.
Читать дальше →
Всего голосов 104: ↑100 и ↓4 +96
Комментарии 80

Разработка для Sailfish OS: Тестирование QML-кода, зависящего от C++ в Sailfish OS

Время на прочтение 6 мин
Количество просмотров 3.9K
Разработка мобильных приложений *Qt *Тестирование мобильных приложений *Разработка под Sailfish OS *
Туториал
Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке для мобильной платформы Sailfish OS и их тестированию. Одна из предыдущих статей была посвящена тестированию QML-компонентов приложения. Однако, часто разработчики сталкиваются с потребностью написания собственных компонентов на языке C++ для использования функционала, недоступного из QML, или для улучшения производительности. Об этом также уже было написано. Тестирование таких компонентов отличается от тестирования уже существующих. В данной статье мы расскажем, как тестировать собственные QML-компоненты, написанные на языке C++.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 0

Анализ трафика GSM сетей в Wireshark

Время на прочтение 5 мин
Количество просмотров 40K
Блог компании Pentestit Информационная безопасность *
Туториал


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

Для работы нам osmocom-bb совместимый телефон, способный принимать сигнал на частотах GSM, для России это 900 МГц и 1800 МГц и компьютер с установленным сниффером Wireshark.
Читать дальше →
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 25

Лучшие доклады конференции DotNext 2015 Piter: Часть 2 (Видео внутри)

Время на прочтение 4 мин
Количество просмотров 17K
Блог компании JUG Ru Group .NET *Visual Studio *C# *
Три дня назад я рассказал о тех докладах конференции DotNext 2015 Piter, которые, согласно опросу участников, заняли места с 6 по 10. Теперь пришло время рассказать про лучшую пятерку докладов.




5 место


Кирилл Скрыган, JetBrains — ReSharper vs. Roslyn
Средняя оценка: 4.33



Казалось бы, ReSharper — плагин к Visual Studio, который расширяет возможности IDE. Roslyn — компилятор (набор компиляторов). Что общего?

Дело в том, что для того, чтобы делать все возможные рефакторинги, подсказки и пр., ReSharper строит собственную модель, собственное синтаксическое дерево. А значит, в нем есть, фактически, половина компилятора, компиляторный front-end. А значит, его можно сравнить с фронтэндом Roslyn, что Кирилл и сделал в этом докладе.

Акценты Кирилл расставил не в пользу Roslyn:
  • ReSharper на 10 лет старше, в нем гораздо больше фич
  • Roslyn работает только для C# и VB, никаких JavaScript и прочих прелестей
  • синтаксическое дерево у ReSharper изменяемое и поэтому быстрое, а у Roslyn неизменяемое, генерит много memory traffic и поэтому медленное.




Основной вывод, который сделал я — Roslyn еще пока довольно сырой продукт, а почти все описанные Кириллом болезни — «детские». Пройдет время и наверняка от всех от них Рослин избавится. Ну а что будет на самом деле — покажет время.

Первые 4 места...
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 3

Неконстантные константные выражения

Время на прочтение 24 мин
Количество просмотров 38K
Ненормальное программирование *Программирование *C++ *
Перевод
// <какой-то код>
 
int main ()
{
        constexpr int a = f ();
        constexpr int b = f ();
 
        static_assert (!= b, "fail");
}

Можно ли в приведенном выше фрагменте вместо комментария вставить такое определение f (), чтобы a получила значение, отличное от b?

“Разумеется, нет!” — скажете вы, немного подумав. Действительно, обе переменные объявлены со спецификатором constexpr, а значит, f () тоже должна быть constexpr-функцией. Всем известно, что constexpr-функции могут выполняться во время компиляции, и, как следствие, не должны зависеть от глобального состояния программы или изменять его (иными словами, должны быть чистыми). Чистота означает, что функция при каждом вызове с одними и теми же аргументами должна возвращать одно и то же значение. f () оба раза вызывается без аргументов, поэтому должна оба раза вернуть одно и то же значение, которое и будет присвоено переменным a и b… правильно?

Еще неделю назад я знал, что это правда, и действительно думал, что невозможно пройти static_assert в приведенном выше фрагменте, не допуская неопределенного поведения.

Я ошибался.
Увиденное под катом уже не развидеть
Всего голосов 61: ↑57 и ↓4 +53
Комментарии 28

Алгоритм выбора STL-контейнера

Время на прочтение 1 мин
Количество просмотров 62K
Блог компании Инфопульс Украина C++ *Алгоритмы *
Туториал
Перевод


UPD: схема заменена на вариант с контейнерами из С++11, соавторы — в комментариях ниже

Первый вариант схемы - без контейнеров из С++11

Всего голосов 86: ↑74 и ↓12 +62
Комментарии 54

Блок-схема для выбора STL-алгоритма

Время на прочтение 1 мин
Количество просмотров 27K
Программирование *C++ *Алгоритмы *
Туториал
Из песочницы


Третьего дня, во время сортировки старых закладок, попалась мне на глаза блок-схема с алгоритмом выбора STL-контейнера. «Почему же для контейнеров есть, а для стандартных алгоритмов нет? — подумал я. — Это необходимо исправить». Подумано — сделано. Сперва планировалось за пару часов нарисовать нечто простенькое, но в дальнейшем обнаружилось, что алгоритмы никак не хотят умещаться в простенькую схему. Я слегка увлекся, и спустя два вечера схема вобрала в себя 84 алгоритма, а также немного дополнительной информации. Под катом можно увидеть, что получилось в итоге.
Долой велосипеды!
Всего голосов 56: ↑52 и ↓4 +48
Комментарии 19

Самая устаревшая инфраструктура, которую только можно купить за деньги

Время на прочтение 8 мин
Количество просмотров 60K
Блог компании Инфопульс Украина Ненормальное программирование *Анализ и проектирование систем *Компиляторы *
Перевод
На днях исполняется 10 лет с тех пор, как я получил самую странную свою работу.

Шел 2005-ый год. Мой интерес к разработке системы управления контентом на Java для компании, недавно купившей наш стартап, неуклонно улетучивался, в то время как моей настоящей страстью была разработка компиляторов и инструментов языковой инфраструктуры (в основном для SBCL). Как-то раз я заметил открытую вакансию как-раз по этому направлению, что вообще-то было достаточно редким явлением. Я быстро прошел интервью — настолько быстро, что даже не задал нужных вопросов и проигнорировал несколько тревожных звоночков.

Меня ожидало захватывающее путешествие в мир ретрокомпьютинга.
Читать дальше →
Всего голосов 129: ↑125 и ↓4 +121
Комментарии 42

Автоматический определитель электронных компонентов

Время на прочтение 3 мин
Количество просмотров 160K
DIY или Сделай сам


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

Для этого потребуется совсем немного деталей, которые обычно есть у каждого начинающего ардуинщика: микроконтроллер ATMEGA, двухстрочный дисплей и несколько резисторов.
Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Комментарии 71

Самые нужные плагины для Grunt

Время на прочтение 6 мин
Количество просмотров 49K
Разработка веб-сайтов *CSS *JavaScript *HTML *Node.JS *


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

У веб-разработчиков есть прекрасный инструмент для автоматизации массы задач, который называется Grunt. И моя страсть к таксономии заставила себя собрать огромную коллекцию почти из 100 ценных плагинов для этого сборщика. Думаю многие кто уже использует Grunt найдут для себя что-то нужное, а кто нет, глядя на возможности, получит хорошую мотивацию установить его и понять как эта штука работает.

А еще я выложил подборку на GitHub, чтобы каждый мог пополнить коллекцию.

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

Jump Start в PowerShell (часть I)

Время на прочтение 5 мин
Количество просмотров 241K
Системное администрирование *PowerShell *
Туториал
Из песочницы
Только автоматизация. Только PowerShell.



Предисловие


В качестве хобби и при наличии времени преподаю студентам в УКИТ (бывший Московский государственный колледж информационных технологий). На данный момент у меня мало времени, чтобы уделить его группе студентов, зато вполне достаточно, чтобы подготовить пост здесь, на Хабре.

Я работаю системным администратором в крупной не ИТ-компании с большой завязкой на ИТ ресурсы. По роду деятельности представляется решать большое количество однотипных задач по обслуживанию пользователей.

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

Внимание: PowerShell вызывает привыкание.
Читать дальше →
Всего голосов 46: ↑37 и ↓9 +28
Комментарии 63

Atari 800XL: Смотрим, разбираем, включаем

Время на прочтение 6 мин
Количество просмотров 53K
История IT Старое железо Игры и игровые консоли
Наверняка многие читатели Хабра выросли на компьютерах ZX Spectrum и БК-0010/0011, ну или как минимум сталкивались с ними в далёких 90-х годах. Для многих эти ПК стали отправной точкой в мир ИТ. Но, как и многое другое, в нашу страну восьмибитные домашние ЭВМ пришли гораздо позже остального цивилизованного мира, да и не в полном объёме. Там же эта эра началась почти на 10 лет раньше, в конце 70-х годов, когда вышли Atari 400/800, Commodore PET и, конечно, Apple II. Массовое же распространение домашние компьютеры начали получать в начале 80-х. В 1982 году увидели свет знаменитый ZX Spectrum 48 и не менее знаменитый Commodore 64, в 1983 году вышел Atari 800XL, а в 1984 году на прилавках магазинов появился первый Macintosh. Как и большинство домашних компьютеров на тот момент, Atari 800XL был основан на процессоре 6502C с частотой 1.79 МГц, имел 64Кб памяти, умел запускать игры с кассет, трещать 5,25" дискетами, выгуливать на экране 61440 разноцветных пикселей и много чего ещё. Об этой замечательной железке я и собираюсь сегодня поговорить, впрочем, не только поговорить!


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

Будущее интеллекта

Время на прочтение 10 мин
Количество просмотров 37K
Биотехнологии


Благодаря бурному развитию микроэлектроники и компьютерных технологий всё более актуальным становится спор между теоретиками и сторонниками двух путей развития человека: технологического и биологического. Существующие тенденции не позволяют с уверенностью предположить, какой путь окажется доминирующим. Дальнейшее развитие человечества также будет неразрывно связано с изменением интеллекта. И понимание того, как именно эволюционировал человеческий интеллект на протяжении истории нашего вида, может дать нам подсказки к прогнозированию его будущего развития. Интеллект является продуктом деятельности головного мозга и, таким образом, относится к биологическим системам. И как и любая биологическая система, со временем он эволюционирует. Именно благодаря развитию интеллекта человечество стало наиболее адаптируемым к внешним условиям видом живых существ и обрело невероятную силу.

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

BOOTSTRA.386: тема для Bootstrap в духе 1980-х

Время на прочтение 1 мин
Количество просмотров 108K
Дизайн История IT
Оказывается, некоторые темы для Bootstrap — это маленькие произведения искусства. В рамках надвигающейся пятницы хотелось бы рассказать об одной из таких тем.

Крис МакКензи — явно один из тех, кто скучает по старым добрым временам DOS, EGA/VGA и Turbo Vision, иначе он вряд ли бы решился сделать что-то подобное. Так что если вы успели устать от засилья плоского дизайна, то добро пожаловать в мир BOOTSTRA.386!

Осторожно: будьте готовы к острому приступу ностальгии. Единственное, чего не хватает для полного погружения — так это навигации с клавиатуры, ну и курсора в виде прямоугольного блока.

image

Читать дальше →
Всего голосов 201: ↑192 и ↓9 +183
Комментарии 45

Информация

В рейтинге
4 629-й
Откуда
Невинномысск, Ставропольский край, Россия
Дата рождения
Зарегистрирован
Активность