Pull to refresh
4
0
Send message

Градация Навыков в Embedded Программировании

Level of difficultyEasy
Reading time18 min
Views11K

В программировании микроконтроллеров нет как таковой общепринятой градации на Junior->Middle->Senior. Не сложилось.

Давайте попробуем вместе разобраться, где же проходит водораздел между Junior->Middle->Senior программистом МК и что справедливо требовать от каждого из них?

Далее речь пойдет в основном про программирование микроконтроллеров. Тут не будет затронут Embedded Linux, FPGA разработка.

Читать далее
Total votes 27: ↑5 and ↓22-17
Comments98

Уязвимость в протоколе SS7 уже несколько лет используют для перехвата SMS и обхода двухфакторной аутентификации

Reading time3 min
Views75K

Схема атаки с перехватом SMS-сообщения. Иллюстрация: Positive Technologies

О критических уязвимостях в сигнальном протоколе SS7 известно уже несколько лет. Например, в 2014 году российские специалисты Positive Technologies Дмитрий Курбатов и Сергей Пузанков на одной из конференций по информационной безопасности наглядно показали, как происходят такие атаки. Злоумышленник может прослушать звонки, установить местоположение абонента и подделать его, провести DoS-атаку, перевести деньги со счёта, перехватывать SMS. Более подробно эти атаки описаны в исследовании «Уязвимости сетей мобильной связи на основе SS7» и в отчёте «Статистика основных угроз безопасности в сетях SS7 мобильной связи».

И вот сейчас появились первые свидетельства, что хакеры с 2014 года действительно используют эту технику для обхода двухфакторной авторизации и перевода денег со счетов клиентов банков. Своё расследование опубликовала немецкая газета Süddeutsche Zeitung.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments83

Как лечат сумасшедших. 1.1 — Фармакотерапия: основы и шизофрения

Reading time18 min
Views148K
Приветствую тебя, %username%!



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

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

Если вышеизложенное вас не отпугивает, предлагаю окунуться в увлекательный мир психофармакологии. В посте много букв и картинок, предупреждаю сразу.
Total votes 119: ↑118 and ↓1+117
Comments280

Visual Studio Code отнимает 13% ресурсов CPU из-за мерцания курсора

Reading time3 min
Views57K


Забавная проблема #22900 на этой неделе привлекла особое внимание пользователей Github.

Подробное описание проблемы — в репозитории редактора кода Visual Studio Code (vscode). Open source разработчик Джо Лисс (Jo Liss) известна как создатель Broccoli и других свободных библиотек. На странице проекта она обратила внимание, что Visual Studio Code использует 13% вычислительных ресурсов процессора, если окно находится в фокусе. Из-за этого впустую расходуется заряд аккумулятора на ноутбуке. Что могло бы быть причиной столь странного поведения программы?
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments135

Изменение размера изображения с учётом содержимого

Reading time10 min
Views20K

Изменение размера изображения с учётом содержимого (Content Aware Image Resize), жидкое растяжение (liquid resizing), ретаргетинг (retargeting) или вырезание шва (seam carving) относятся к методу изменения размера изображения, где можно вставлять или удалять швы, или наименее важные пути, для уменьшения или наращивания изображения. Об этой идее я узнал из ролика на YouTube, от Shai Avidan и Ariel Shamir.


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


Для подопытной картинки, я поискал по запросу1 "sample image", и нашел её2:


image

Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments23

Домашний хостинг сайтов с динамическим IP

Reading time6 min
Views147K
У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

В то-же время в наличии имеется:

  • Домашний сервер на Ubuntu
  • Быстрый ethernet-интернет от МТС

Но не имеется ключевого — статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com, но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).
Читать дальше →
Total votes 57: ↑44 and ↓13+31
Comments92

ГОСТ Р 34.12 '15 на SSE2, или Не так уж и плох Кузнечик

Reading time18 min
Views33K

На Хабре уже как минимум дважды упоминался новый отечественный стандарт блочного шифрования ГОСТ Р 34.12 2015 «Кузнечик», ru_crypt в своем посте рассмотрел основные механизмы и преобразования нового стандарта, а sebastian_mg занимался пошаговой трассировкой базового преобразования. Но многие вопросы остались без ответа. Насколько быстр новый ГОСТ? Можно ли его оптимизировать, эффективно реализовать, ускорить аппаратно?


GOST R 34.12 2015 with SSE2

А если можно, то как?
Total votes 55: ↑53 and ↓2+51
Comments47

«Правда, чистая правда и статистика» или «15 распределений вероятности на все случаи жизни»

Reading time15 min
Views243K
Статистика приходит к нам на помощь при решении многих задач, например: когда нет возможности построить детерминированную модель, когда слишком много факторов или когда нам необходимо оценить правдоподобие построенной модели с учётом имеющихся данных. Отношение к статистике неоднозначное. Есть мнение, что существует три вида лжи: ложь, наглая ложь и статистика. С другой стороны, многие «пользователи» статистики слишком ей верят, не понимая до конца, как она работает: применяя, например, тест Стьюдента к любым данным без проверки их нормальности. Такая небрежность способна порождать серьёзные ошибки и превращать «поклонников» теста Стьюдента в ненавистников статистики. Попробуем поставить точки над i и разобраться, какие модели случайных величин должны использоваться для описания тех или иных явлений и какая между ними существует генетическая связь.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments29

Современная операционная система: что надо знать разработчику

Reading time22 min
Views67K

Александр Крижановский (NatSys Lab.)


Александр Крижановский

Нас сегодня будет интересовать операционная система – ее внутренности, что там происходит… Хочется поделиться идеями, над которыми мы сейчас работаем, и отсюда небольшое вступление – я расскажу о том, из чего состоит современный Linux, как его можно потюнить?

По моему мнению, современная ОС – это плохая штука.




Дело в том, что на картинке изображены графики сайта Netmap (это штуковина, которая позволяет вам очень быстро захватывать и отправлять пакеты сетевого адаптера), т.е. эта картинка показывает, что на одном ядре с разной тактовой частотой до 3 ГГц Netmap позволяет 10 Гбит – 14 млн. пакетов в сек. отрабатывать уже на 500 МГц. Синенькая линия – это pktgen – самое быстрое, что, вообще, есть в ядре Linux’а. Это такая штуковина – генератор трафика, который берет один пакет и отправляет его в адаптер много раз, т.е. никаких копирований, никакого создания новых пакетов, т.е., вообще, ничего – только отправка одного и того же пакета в адаптер. И вот оно настолько сильно проседает по сравнению с Netmap (то, что делается в user-space показано розовой линией), и оно вообще где-то там внизу находится. Соответственно, люди, которые работают с очень быстрыми сетевыми приложениями, переезжают на Netmap, Pdpdk, PF_RING – таких технологий море сейчас.
Читать дальше →
Total votes 102: ↑94 and ↓8+86
Comments51

Оптимизация кода: процессор

Reading time18 min
Views113K
Все программы должны быть правильными, но некоторые программы должны быть быстрыми. Если программа обрабатывает видео-фреймы или сетевые пакеты в реальном времени, производительность является ключевым фактором. Недостаточно использовать эффективные алгоритмы и структуры данных. Нужно писать такой код, который компилятор легко оптимизирует и транслирует в быстрый исполняемый код.

image

В этой статье мы рассмотрим базовые техники оптимизации кода, которые могут увеличить производительность вашей программы во много раз. Мы также коснёмся устройства процессора. Понимание как работает процессор необходимо для написания эффективных программ.
Читать дальше →
Total votes 107: ↑102 and ↓5+97
Comments142

Биохакинг мозга: куда располагать электроды, чтобы стать умнее?

Reading time10 min
Views60K
Сейчас в поле зрения общественного внимания попадает всё больше исследований tDCS – транскраниальной стимуляции постоянным током. Довольно большое количество научных работ последних лет демонстрируют, что tDCS может улучшать когнитивные способности не только при лечении болезней, но и у совершенно здоровых людей. Среди них – реакция, внимание, память и обучение иностранным языкам. Успехи научных исследований привлекли внимание DIY сообщества, которое взяло технологию на вооружение и стало активно применять tDCS на себе.

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

Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments91

Деанонимизируем пользователей Windows и получаем учетные данные Microsoft и VPN-аккаунтов

Reading time6 min
Views127K

Если вы не видите эту картинку, то данные вашей учетной записи Windows уже скомпрометированы.

Введение

Давным-давно, когда компьютеры были одноядерными и прекрасно работали с 256 МБ RAM, а сети под управлением Windows уже использовались очень широко, ребята из Microsoft подумали, что было бы удобно аутентифицироваться только один раз, при загрузке компьютера, а доступ на внутренние ресурсы происходил бы автоматически, без ввода пароля, и сделали так называемую технологию единого входа (Single Sign-on). Единый вход работает очень просто: когда пользователь пытается получить доступ к какому-либо ресурсу с NTLM-аутентификацией (стандартный способ аутентификации в сетях Windows), ОС сразу передает название домена, имя учетной записи и хеш пароля текущего пользователя, и если под этими данными войти не удалось, показывает диалог ввода имени пользователя и пароля. Шли годы, проблемы с безопасностью реализации технологии единого входа давали о себе знать, одни из которых успешно исправляли, другие исправляли менее успешно, а о третьих почему-то совсем забыли. Так и забыли о проблеме передачи учетных данных для единого входа на SMB-ресурсы (сетевые ресурсы: файлы и папки, принтеры, и т.д.) через интернет, которую можно эксплуатировать во всех современных ОС, включая Windows 10 со всеми последними обновлениями. Об этой особенности работы стека аутентификации вспоминают каждые 1-2 года, последний раз о ней рассказывали на Blackhat US 2015, но Microsoft не спешит что-либо менять.
Читать дальше →
Total votes 191: ↑186 and ↓5+181
Comments194

Загадка штормгласса — домашней метеостанции на элементной базе начала XIX века

Reading time6 min
Views80K
Статьи про изготовление и использование домашних метеостанций публикуют на Гиктаймс регулярно. Я решил не отставать от тренда и тоже написать рассказ о метеостанции, которая висит у меня за окном — о штормглассе.

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


Такие штормглассы продают на ebay — кристаллы выглядят красиво, но по их виду я могу сказать, что штормгласс использовался вхолостую, и погоду сейчас не показывает.

Объяснение принципа работы оказалось невероятно простым, а сам прибор — достаточно чувствительным, чтобы я мог, глянув на него, понять, как нужно одеваться, выходя из дома.
Если вам интересны подробности, прошу под кат.
Total votes 121: ↑121 and ↓0+121
Comments44

Что такое пространство-время на самом деле?

Reading time22 min
Views117K

Перевод поста Стивена Вольфрама "What Is Spacetime, Really?".
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе и подготовке публикации.


Примечание: данный пост Стивена Вольфрама неразрывно связан с теорией клеточных автоматов и других смежных понятий, а также с его книгой A New Kind of Science (Новый вид науки), на которую из этой статьи идёт большое количество ссылок. Пост хорошо иллюстрирует применение программирования в научной сфере, в частности, Стивен показывает (код приводится в книге) множество примеров программирования на языке Wolfram Language в области физики, математики, теории вычислимости, дискретных систем и др.

Содержание


Простая теория всего?
Структура данных Вселенной
Пространство как граф
Может быть, нет ничего, кроме пространства
Что есть время?
Формирование сети
Вывод СТО
Вывод ОТО (Общей теории относительности)
Частицы, квантовая механика и прочее
В поисках вселенной
Ок, покажите мне Вселенную
Заниматься физикой или нет — вот в чем вопрос
Что требуется?
Но пришло ли время?
Сто лет назад Альберт Эйнштейн опубликовал общую теорию относительности — блестящую, элегантную теорию, которая пережила целый век и открыла единственный успешный путь к описанию пространства-времени (пространственно-временного континуума).

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

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

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

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

Во-первых, такой подход казался не слишком перспективным — хотя бы потому, что модели, которые я изучал (клеточные автоматы), казалось, работали так, что это полностью противоречило всему тому, что я знал из физики. Но где-то в 88-м году — в то время, когда вышла первая версия Mathematica, я начал понимать, что если бы я изменил свои представления о пространстве и времени, возможно, это к чему то бы меня привело.
Подробнее о пространственно-временном континууме...
Total votes 43: ↑39 and ↓4+35
Comments144

Какие из данных платформ подходят для лаборатории робототехники и интеллектуальных систем?

Reading time2 min
Views11K


Господа! У меня уже две различные организации спрашивали совета про оборудование лаборатории роботики. Причем не для младших детей, а для старших школьников + младших студентов, с возможностью расширения до старших студентов и исследовательских проектов. То есть ожидается, что в лаборатории будут использоваться профессиональные средства разработки, а не упрощенные, наподобие Лего и недостаточно гибкого Ардуино. Кроме этого, ожидается, что роботы будут делать что-нибудь умное, с распознаванием образов и ситуаций, чтобы можно было бы назвать «лаборатория робототехники и интеллектуальных систем».

По этому поводу я хочу устроить обсуждение:

1. Ниже я перечислю несколько платформ, которые я собираюсь привезти в августе в Казахстан и в октябре-ноябре в Россию и Украину. Я знаю, что на большинстве из этих платформ кто-нибудь да построил робота. Но каких из этих платформ подходят для роботики с вашей точки зрения?

2. У меня не очень много опыта с моторчиками и другими активаторами. Где и что бы вы купили для преподавания робототехники (как специализации программирования встроенных систем)?

Восемь платформ у меня на руках:
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments36

Telegram: чат-культура 2.0

Reading time5 min
Views33K
Групповые чаты в Телеграм вернули целый пласт IT- и digital-специалистов туда, откуда харкорные гики и не вылезали: во времена IRC, игр в мафию на сервере локальной сети ближайшего университета и знакомств на #talks с последующей развиртуализацией на пойнте где-нибудь в Братеево (последнее было актуально в Москве).

Эта статья — для тех, кто ничего не понимает в чатах, слегка понимает в чатах и знает о чатах все. Я расскажу о том, как устроены групповые чаты в Телеграм, в чем их плюсы и минусы и о том, как и зачем их использовать. И, само собой, в конце вас ждет список самых активных dev-geek-чатов Телеграма.
Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments65

Подключение MATLAB к Wolfram Mathematica

Reading time7 min
Views7.3K


Вызов MATLAB из Mathematica с помощью MATLink


Как можно вызывать функции MATLAB напрямую из Mathematica и организовать обмен данными и переменными между двумя системами?

Для этого существует кроссплатформенный пакет под названием MATLink. С помощью него легко организовать вызов функций MATLAB прямо из Mathematica и передавать различные данные от одной системы другой.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments0

Пишем сериализатор для сетевой игры на C++11

Reading time18 min
Views25K
Написать этот пост меня вдохновила замечательная статья в блоге Gaffer on Games «Reading and Writing Packets» и неуёмная тяга автоматизировать всё и вся (особенно написание кода на C++!).

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

  • Выбор формата. Если бы мы писали простенькую игру на JavaScript, нас бы устроил JSON или любой его самописный родственник. Но мы пишем серьёзную многопользовательскую игру, требовательную к трафику; мы не можем позволить себе отправлять ~16 байт на float вместо четырёх. Значит, нам нужен «сырой» двоичный формат. Однако, двоичные данные усложняют отладку; было бы здорово, если бы мы могли менять формат в любой момент, не переписывая целиком все наши функции чтения/записи.
  • Проблемы безопасности. Первое правило сетевой игры: не доверяй данным, присланным клиентом! Функция чтения должна уметь оборваться в любой момент и вернуть false, если что-то пошло не так. При этом использовать исключения считается неважной идеей, поскольку они слишком медленные. Мамкин хакер пусть и не сломает ваш сервер, но вполне может ощутимо замедлить его беспрерывными эксепшнами. Но вручную писать код, состоящий из if'ов и return'ов, неприятно и неэстетично.
  • Повторяющийся код. Функции чтения и записи похожи, да не совсем. Необходимость изменить структуру пакета приводит к необходимости поменять две функции, что рано или поздно приведёт к тому, что вы забудете поменять одну из них или поменяете их по-разному, что приведёт к трудно отлавливаемым багам. Как справедливо замечает Gaffer on Games, it is really bloody annoying to maintain separate read and write functions.

Всех интересующихся тем, как Бендер выполнил своё обещание и при этом решил обозначенные проблемы, прошу под кат.
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments33

Инструменты Intel для создателей видео кодеков

Reading time3 min
Views6.1K
imageНа Хабре в блоге Intel регулярно появляются статьи с описанием технологий и инструментов, созданных в стенах Intel. Многие из них так или иначе связаны с обработкой и анализом видео и изображений. Это такие продукты как, например, Intel Media Server Studio или Intel RealSense. Однако, существует набор инструментов, не так широко представленных в медиа пространстве, но не менее значимых для такой категории разработчиков, как создатели медиа кодеков. Именно этот пробел мы и попытаемся восполнить в данном топике. Речь пойдет про Intel Video Pro Analyzer (Intel VPA) и Intel Stress Bitstreams and Encoder (Intel SBE), а также про те возможности, что скрываются за этими названиями.

Для начала определимся с предметом, сущностью, с которой работают вышеназванные инструменты. Это битовые стримы. Битовый стрим – это то, что получается после того, как отработал видео энкодер. Битовый стрим – это поток битов, отвечающий спецификации того или иного кодека. Если мы заглянем в спецификацию большинства кодеков, то увидим, что этот битстрим представляет из себя ничто иное как набор синтаксических элементов данного кодека различной длины. Это, к примеру, ширина и высота картинки, профиль кодирования, коэффициенты трансформации, различные битовые флаги и т.д. Для стандарта HEVC это сотни синтаксических элементов. После кодирования эти битовые стримы доходят до пользователей, помещенные в различные медиа контейнеры – avi, mp4, mpeg ts и т.д. Но разработчики кодеков в основном работают именно с битовыми стримами. Разработчики ПО, дизайнеры, инженеры – электронщики, тестеры имеют свои инструменты для работы. Почему же разработчикам кодеков их не иметь?
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments3

Intel собирается бороться с эксплойтами на уровне микропроцессора

Reading time3 min
Views19K
Компания Intel опубликовала предварительную спецификацию новой концепции защиты от эксплойтов с привлечением микропроцессора. В своем посте, который посвящен новой технологии под названием Control-flow Enforcement Technology (CET), объясняется модель защиты от эксплойтов, которые так или иначе используют для своих целей методы ROP. Как правило, ROP используется для обхода DEP в системе. Эта защитная мера (DEP) также реализуется с привлечением микропроцессора и помечает RW-страницы данных виртуальной памяти как не подлежащие исполнению (NX).



CET вводит понятие теневого стека вызовов (shadow stack), который ведется самим микропроцессором и в котором сохраняется информация об адресах возврата для дальнейшего использования инструкцией ret. При возврате потока из той или иной функции, микропроцессор будет проверять адрес возврата, который сохранен на стеке потока с тем, который сохранен на теневом стеке и в случае их несоответствия будет генерировать исключение, обрабатываемое ОС. CET определяет интерфейсы для ОС, которые позволят автоматизировать этот процесс и эффективно бороться с эксплойтами, использующими ROP.

Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments21
1
23 ...

Information

Rating
Does not participate
Registered
Activity