Как стать автором
Обновить
4
0

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

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

Операционные усилители. Часть 3: Вычисление суммы, разности, интеграла и производной на ОУ

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров28K

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

В данной публикации цикла мы научимся с помощью ОУ производить операции сложения и вычитания. Кроме того, мы разберём работу интегрирующих и дифференцирующих звеньев, а также схемы выборки-хранения.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+63
Комментарии33

Делаем устройство для мониторинга концентрации CO₂

Время на прочтение8 мин
Количество просмотров25K

Нередко мы сильно увлекаемся написанием кода настолько, что забываем подышать свежим воздухом, особенно когда нельзя держать окно постоянно открытым (ну, бывают причины). В результате этого в помещении повышается концентрация СО₂ и впоследствии начинаются неприятные побочные эффекты в виде сонливости, заторможенности и головной боли. Для решения этой проблемы существуют датчики СО₂, которые при достижении определённой концентрации скажут, что пора открыть окно. Готовые варианты конечно хорошо, но это слишком просто — сделаем своё хост-устройство для измерения и разомнём извилины.
Читать дальше →
Всего голосов 53: ↑52 и ↓1+75
Комментарии71

Веб-сервер на старом смартфоне Android

Время на прочтение6 мин
Количество просмотров65K


Бывает такое, что смартфон становится ненужным — например, на нём разбивается экран или он просто старенький, тормозит даже браузер. Что делать с таким гаджетом, не выбрасывать же его? В самом деле, американцы летали на Луну с компьютерами, у которых характеристики много хуже, чем в вашем старом смартфоне. Скорее всего, в нём 4−8 процессорных ядер, 2−4 гигабайта оперативной памяти, блок бесперебойного питания с аккумулятором. Не слабее, чем некоторые компьютеры.

Попробуем найти этому смартфону полезное применение.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+50
Комментарии91

Работаем с сетевыми адаптерами через Pcap-драйверы

Время на прочтение16 мин
Количество просмотров11K
Работой с сетью в наше время никого не удивишь. Насколько я знаю, работать с сокетами нынче обучают уже на втором курсе соответствующих специальностей. Так что в целом, сетевые навыки должны быть у многих программистов. Но иногда требуется не просто работать с сетью, а делать это с предопределёнными параметрами, будь то расстояние между пакетами либо какое-то нестандартное их содержимое. Понятно, что речь идёт не о повседневной жизни, а об отладке либо тестировании проектов. В этом нам поможет работа через Pcap-драйверы. Например, через драйвер Npcap, устанавливающийся вместе с программой Wireshark.



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

В общем, думаю, имеет смысл свести все сведения воедино. Кому интересно – приступаем!
Читать дальше →
Всего голосов 9: ↑8 и ↓1+8
Комментарии14

Отправка и прием данных неизвестной длины по UART через DMA в freeRTOS на STM32 с использованием LL

Время на прочтение5 мин
Количество просмотров29K

В этой статье я расскажу о том, как реализовать работу с UART через DMA в freeRTOS.

Приступим!
Всего голосов 11: ↑8 и ↓3+6
Комментарии7

Осваиваем LaTeX за 30 минут

Время на прочтение14 мин
Количество просмотров295K

Это руководство нацелено на первое знакомство с LaTeX и предварительных знаний о нем от вас не потребует. К его завершению вы уже напишете свой первый документ и получите представление о ряде базовых возможностей этого инструмента.
Читать дальше →
Всего голосов 46: ↑41 и ↓5+56
Комментарии57

Интеграция PVS-Studio в uVision Keil

Время на прочтение14 мин
Количество просмотров3.7K

Я занимаюсь разработкой для встраиваемых систем (в основном, под STM32 и Миландр), в качестве основной среды я использую uVision Keil. И, поскольку пишу я на С и С++, уже долгое время меня мучает вопрос – правильно ли я пишу код? Можно ли так?


Не, он конечно компилируется, но это же С++, язык, где «program is ill-formed, no diagnostic required» — это норма.


Соответственно, на протяжении нескольких лет я донимал руководство просьбами купить нам лицензию PVS-Studio и, наконец, когда моя просьба неожиданно совпала с моментом, когда нужно было срочно потратить выделенные на закупку ПО деньги, нам ее все-таки купили!


Радости моей с одной стороны не было предела, но с другой оказалось, что не все так хорошо; сходу PVS-Studio встраивается только в Visual Studio (что порадовало отдел разработки под десктопы) и продукты от Jetbrains (CLion, Rider, Idea, Android Studio), для некоторых других систем сборки тоже предусмотрены готовые сценарии, а вот для Keil’a заявлена только поддержка компилятора – и все. А значит, нужно заниматься интеграцией. Кто будет этим заниматься? Ну, мне же больше всех надо…


Читать дальше →
Всего голосов 18: ↑16 и ↓2+20
Комментарии5

Как устроен блок питания, который работает в каждом системнике

Время на прочтение12 мин
Количество просмотров130K

Блок питания извлечён из корпуса. Пучок проводов слева подключается к компьютеру. Большой компонент посередине типа трансформатора — это фильтрующий индуктор. Кликабельно, как и все фотографии в статье

Вы когда-нибудь задумывались, что находится внутри блока питания (БП) вашего компьютера? Задача БП — преобразовать питание из сети (120 или 240 В переменного тока, AC) в стабильное питание постоянного, то есть однонаправленного тока (DC), который нужен вашему компьютеру. БП должен быть компактным и дешёвым, при этом эффективно и безопасно преобразовывать ток. Для этих целей при изготовлении используются различные методы, а сами БП внутри устроены гораздо сложнее, чем вы думаете.

В этой статье мы разберём блок стандарта ATX и объясним, как он работает1.
Читать дальше →
Всего голосов 46: ↑31 и ↓15+31
Комментарии97

Топ 6 библиотек Python для визуализации: какую и когда лучше использовать?

Время на прочтение13 мин
Количество просмотров70K

Если вы только собираетесь начать работу с визуализацией в Python, количество библиотек и решений вас определенно поразит:

- Matplotlib

- Seaborn

- Plotly

- Bokeh

- Altair

- Folium

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

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

3. Частотные характеристики звеньев и систем автоматического регулирования. 3.6 Инерционно-дифференцирующее звено

Время на прочтение4 мин
Количество просмотров7.4K

Лекции по курсу «Управление Техническими Системами» читает Козлов Олег Степанович на кафедре «Ядерные реакторы и энергетические установки» факультета «Энергомашиностроения» МГТУ им. Н.Э. Баумана. За что ему огромная благодарность!

Данные лекции готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется. В доугих сериях:

1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13.
3. ЧАСТОТНЫЕ ХАРАКТЕРИСТИКИ ЗВЕНЬЕВ И СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (РЕГУЛИРОВАНИЯ).
3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ.
3.2. Типовые звенья систем автоматического управления (регулирования). Классификация типовых звеньев. Простейшие типовые звенья.
3.3. Апериодическое звено 1–го порядка (инерционное звено). На примере входной камеры ядерного реактора.
3.4. Апериодическое звено 2-го порядка.
3.5. Колебательное звено.
3.7. Форсирующие звено.

Тема сегодняшней статьи: 3.6. Инерционно-дифференцирующее звено

Будет как всегда интересно познавательно и жестко.

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

Все английские времена в одной простой схеме

Время на прочтение3 мин
Количество просмотров221K

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

Как это часто бывает, по-настоящему понимаешь какую-то тему, только когда начинаешь рассказывать о ней другим («метод Фейнмана»). Несколько друзей, позавидовав моим «успехам», попросили помочь разобраться с английским. Тут и обнаружилось, что хотя я уже успешно использую английский в повседневной работе, обучать ему кого-то ещё — это совершенно отдельный навык.

Первоначальная идея. Сначала разъяснить все английские времена за один присест удавалось, надёргав различных идей из интернета: обрывки чьих-то схем, начинали склеиваться в свою схему и обрастать собственными легендами, а применение времён почти всегда было проще пояснить, используя хрестоматийную «систему английских времен с точки зрения употребления глагола “to vodka”». С каждой новой импровизированной лекцией, схема и нарратив продолжали меняться. «Ученики» попадались с различным базовым уровнем, что позволило понять, откуда нужно начинать плясать, чтобы урок был понятен всем, кто хоть раз слышал что-то про глаголы have и be. Когда счёт обученных уже пошёл на десятки, я решил оформить идею в более стройную лекцию. От первых попыток преподавания английских времён, до этого момента прошло пять лет. За это время было обучено ещё пару сотен человек. Обучено — по приколу. Денег за эти уроки я не брал.

Читать далее
Всего голосов 58: ↑55 и ↓3+63
Комментарии130

Лучшие open source альтернативы MS Project с диаграммами Ганта

Время на прочтение7 мин
Количество просмотров77K
Если вы управляете большими и сложными проектами, попробуйте сначала решения на базе open source. Если не понравится — вернётесь к Microsoft Project.



Проектирование и конструирование спутников, создание роботов, запуск любого серьёзного продукта — всё это сложные большие проекты. Разработка ИТ-продуктов во многом относится к той же категории. Нам приходится привлекать, распределять и вкладывать большие суммы, взаимодействовать с поставщиками и подрядчиками (нередко это команды на аутсорсе). В результате формируются сложные зависимости, которые нужно отслеживать и корректировать.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии18

Что такое MISRA и как её готовить

Время на прочтение12 мин
Количество просмотров23K

Рисунок 1


Пожалуй, каждый разработчик программ для микроконтроллеров наверняка хотя бы раз слышал про специальные стандарты кодирования, призванные помочь повысить безопасность и переносимость вашего кода. Одним из таких стандартов является MISRA. В этой статье мы рассмотрим подробнее, что же представляет собой этот стандарт, какова его философия и как использовать его в ваших проектах.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+19
Комментарии55

Метеостанция на максималках

Время на прочтение20 мин
Количество просмотров36K

Про метеостанцию на Хабре писали не раз и не два, и наверное не с десяток раз. И вот настало моё время. Решил с вами поделиться своей. 

Читать далее
Всего голосов 18: ↑16 и ↓2+22
Комментарии55

«Умная камера» на базе Raspberry Pi с управлением через Telegram-бота

Время на прочтение11 мин
Количество просмотров20K

Привет, меня зовут Иван. Сразу отвечу на главный вопрос: почему стал собирать сам, а не взял готовое решение? Во-первых, стоимость готовых решений - Raspberry Pi со всеми датчиками и камерой вышла не больше $30, большая часть еще по курсу 60 рублей за доллар. Во-вторых, почти все части уже были - Raspberry Pi отдал брат, камера осталась еще с лохматых времен, диод тоже был - покупал для Arduino, а датчик движения на Aliexpress стоил не больше 100 рублей.

Читать далее
Всего голосов 15: ↑14 и ↓1+20
Комментарии14

Регулярные выражения (regexp) — основы

Время на прочтение21 мин
Количество просмотров988K

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах... Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

Читать далее
Всего голосов 50: ↑42 и ↓8+43
Комментарии76

Перфорационные очки на 3D-принтере для улучшения зрения: опыт моделирования и полученный эффект

Время на прочтение8 мин
Количество просмотров22K

Перфорационные очки (очки с дырочками) – идеальный вариант для тех, кому лень делать гимнастику для глаз. Я почувствовала, что в последнее время понижается острота зрения и решила не покупать тренажёры за 1000 рублей, а смоделировать и распечатать на 3d-принтере. Интересно было проверить – действительно это работает или нет.

Читать далее
Всего голосов 23: ↑17 и ↓6+16
Комментарии67

Этичный хакинг: как взламывать системы и при этом зарабатывать легально

Время на прочтение10 мин
Количество просмотров47K
image

Кто такой хакер? Большинство людей, которые далеки от программирования, представляют перед собой злостного преступника, взламывающего системы безопасности банков, чтобы украсть деньги. Что-то вроде героя Хью Джекмана из фильма «Пароль — “Рыба-меч”», который взламывает шифр Вернама, чтобы украсть из правительственного фонда 9,5 млрд. долларов. Здесь сосредоточимся на правовой стороне взлома, а если ваши представления навеяны именно фильмами, для вас мы подготовили подробный обзор профессии специалиста по кибербезопасности.

Хакером можно быть и легально. Легальных хакеров называют пентестеры, или «этичные хакеры». Вот только нужно хорошо знать, что можно делать во время тестирования системы на проникновение, а что — нельзя. Иначе можно получить вполне реальные проблемы с законом. Совсем недавно мы запустили курс «Этичный хакер», и в этой статье мы поговорим, как заниматься хакингом, зарабатывать на этом неплохие деньги и при этом не иметь проблем с законом. Поехали.
Приятного чтения!
Всего голосов 11: ↑11 и ↓0+11
Комментарии3

Советы и лайфхаки по Windows Terminal

Время на прочтение6 мин
Количество просмотров35K
Терминал Windows поставляется с множеством функций, которые позволяют настраивать его и взаимодействовать с ним наиболее удобным для вас способом. Давайте рассмотрим несколько советов и приемов, которые помогут вам настроить свой терминал так, чтобы он идеально вам подходил. На момент публикации этого сообщения в блоге Windows Terminal имел версию 1.3, а Windows Terminal Preview — версию 1.4.

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

Напишем и поймем Decision Tree на Python с нуля! Часть 2. Основы Python, необходимые для генерации Decision Tree

Время на прочтение8 мин
Количество просмотров4.3K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Pythonで0からディシジョンツリーを作って理解する (2. Pythonプログラム基礎編)".

Данная статья — вторая в серии. Первую вы можете найти здесь.

2.1 Комментарии обозначаются # или ''' (три одинарные кавычки)


# Комментарий
a = 1 # Комментарий 

''' Это тоже комментарий
b = c
c = d
'''

2.2 Использование динамической типизации (тип определяется автоматически)


# динамическая типизация переменных
# = копирование значения справа налево
i = 1 #  целое число (int)
f = 2.1 # число с плавающей запятой (float)
s = "a" # строковый тип (string)
b = True # логический тип (boolean)
l = [0,1,2] # массив,список (array) 
t = (0,1,2) # кортеж (tuple)
d = {"a":0, "b":1} # словарь, ассоциативный массив

print(i,f,s,b,l,t,d)
# 1 2.1 a True [0, 1, 2] (0, 1, 2) {'a': 0, 'b': 1}

# Когда хотим определить тип, используем type
print(type(i)) # Вывод <class 'int'>

# Переменная не сохраняет, а содержит фактическое значение
# Это, своего рода, переменная-ссылка, указывающая на местоположение значения
# Можно получить идентификатор актуального значения через id
print(id(l)) # 00000000000000 (меняется от исполнения к исполнениюц)
l2 = l # Приведу в пример копию массива, где ссылаюсь на 2 его элемента, а фактический массив - 1. 
print(id(l2)) # 00000000000000 (то же значение, что у вышеуказанного id(l))
# Поскольку существует только один фактический массив, кажется, что он был добавлен в массив l, даже если вы добавили элемент со ссылкой на l2.
l2.append(1)
Читать дальше →
Всего голосов 7: ↑3 и ↓4+2
Комментарии2
1

Информация

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