Как стать автором
Поиск
Написать публикацию
Обновить
3
0

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

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

Первые впечатления от 1921вг015, отечественного RISC-V контроллера

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

рис.1


Недавно мне в руки противоестественными путями попал интересный представитель RISC-V контроллеров производства НИИЭТ. Упакован он в пластиковый lqfp100 корпус, в котором скрывается ядро на 50 МГц, мегабайт флеш-памяти и 256 кБ оперативки. Разумеется, в наличии и стандартная периферия вроде UART-ов, SPI и USB. А вот из необычного — сигма-дельта АЦП на 16 бит. Ну и всякая неинтересная периферия вроде аппаратных модулей шифрования. Сразу оговорюсь, что тыкаю палочкой я его меньше двух недель, поэтому здесь описаны именно первые впечатления.

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

modern-cpp-kafka для C++. Решаем проблемы владения и сериализации

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.8K

Идея написания этого небольшого руководства появилась у меня, когда я начал изучать одну из самых популярных библиотек для работы с Apache Kafka - modern-cpp-kafka.

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

Читать далее

Как стать властелином отладчика: помогут ELF, DWARF и много магии

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров4.5K

Привет, Хабр! Меня зовут Константин, я работаю в команде файлового доступа в YADRO. Помимо основной работы, я пишу в open source, работаю над несколькими проектами — в том числе над дебаггером BugStalker (BS) на Rust. 

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

Если уже решили писать свой отладчик, дочитайте до конца — там будет аналитика, которая поможет не наступить на Rust-грабли.

Читать далее

Создание файлового сервера на c++ и Boost

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров4.1K

В этой статье я описал процесс создания файлового сервера — инструмента для организации доступа к файлам по сети. В статье представлен пример реализации файлового сервера на C++ с использованием библиотеки Boost.Beast и Boost.Filesystem. Сервер позволяет просматривать содержимое указанной директории и поддиректорий, скачивать файлы.

Читать далее

Как увеличить скорость python-скриптов: C-расширения и Python/C API

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

Во время разработки ПО мы сталкиваемся с выбором между удобством языка и его производительностью. Python завоевал популярность благодаря простоте и изящности, но когда дело доходит до низкоуровневых действий или махинаций, требующие производительность и быстроту, на помощь приходит C.

Мы будем изучать именно интеграцию расширений во времени сборки, а не просто загрузка библиотек через ctypes.

В этой статье я хочу рассказать о том, как интегрировать C-расширения с использованием библиотеки Python.h. Я также расскажу как создать свою python-библиотеку с C-расширениями. Также мы исследуем, как устроен Python — например, вспомним, что все является объектами. Я буду использовать poetry как менеджер рабочего окружения.

Все будет создаваться на примере моей небольшой библиотеки для различных алгоритмов и вычислений. В конце я проведу анализ pure-python алгоритмов, нашей библиотеки и pure-c алгоритмов: скорость выполнения, распространяемость, минусы и плюсы, количество кода.

Не буду тянуть, начнем!

Читать далее

Как разбирать логи в Linux: journalctl, grep, awk и sed

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

Каждый админ хотя бы раз сталкивался с ситуацией, когда сервер внезапно начинает тупить: подвисают процессы, появляются странные задержки, что-то перестаёт работать. И первая остановка в таком случае — это журналы событий. В Linux системные логи хранятся в systemd-journald, а его главный инструмент для работы — journalctl. Но просто читать логи — это скучно. Разберем, как фильтровать, искать ошибки, анализировать данные и автоматизировать разбор логов с помощью grep, awk, sed и других утилит.

Читать далее

Создание бота для телеграмма на c++, используя библиотеку Boost

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров9.2K

Создание Telegram-ботов обычно ассоциируется с Python , но C++ — это мощная альтернатива для тех, кто ценит производительность и контроль над ресурсами. Использовать мы будем библиотеку Boost для работы с https запросами.

Если нужен только проект то он есть на гитхабе https://github.com/sergey00010/telegram_bot_cpp_boost

Читать далее

Теория графов. Термины и определения в картинках

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

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

Граф - это топологичекая модель, которая состоит из множества вершин и множества соединяющих их рёбер. При этом значение имеет только сам факт, какая вершина с какой соединена.

Теория графов

С++ — это настоящий кайфǃ

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров49K

Я хочу, чтобы вы задали себе один вопрос и честно на него ответили. Когда в последний раз вы получали настоящее удовольствие от программирования? Оглядываясь назад, я понимаю, что не испытывал подобных ощущений, наверное… уже лет десять. Удовольствия у меня не было ни от JavaScript, ни от Python, ни от Ruby или C — ни от чего. Когда я говорю «удовольствие» — я имею в виду ощущения человека, которого во время работы над неким проектом переполняет искренний восторг. Этот человек постоянно ловит себя на такой мысли: «Ох, ну какая ж круть. Поверить не могу, что моя безумная идея и правда сработала!».

Например, я писал маленькую игру-«рогалик». У меня была такая идея: «Готов поспорить, что у меня получиться воспользоваться этим вашим алгоритмом Дейкстры для соединения комнат при генерировании карты, сначала инвертируя карту, а потом его запуская. Вероятно, мне удастся прокопать отличнейшие туннели между комнатами». То было благословенное время, когда я пытался справиться с этой задачей, и при этом не чувствовал, что C++ мне мешает. Мне тогда удалось решить эту задачу, попутно многому научившись. Потом у меня появилась такая мысль: «Интересно, получится мне взять пользовательский интерфейс, сделанный на FTXUI, и просто напрямую его отрендерить в окно визуализации SFML?». Как и следовало ожидать, у меня всё отлично получилось. И хотя это было не так уж и сложно, я по ходу дела много узнал о том, как в C++ обрабатывается юникод. Ни одна из этих задач лёгкой не была, но все их, в принципе, можно было решить, и я не могу напридумывать себе достаточно много «подводных камней», которыми C++ мог бы помешать мне сделать то, что я хочу. Это — то, что я называю «удовольствием».

Читать далее

Как собрать машинку на дистанционном управлении

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров22K

Наверняка все в детстве играли в машинки на пульте управления. В 2024 году у меня появилась идея собрать свою машинку. Как говориться — «Первые 40 лет в жизни мальчика самые сложные».

Читать далее

Совмещаем Ассемблер и Си в одном проекте

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров9K

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

Глядя на главную картинку вы уже почувствовали неладное. Да, я программирую для старинного компьютера ZX Spectrum. Того самого, который построен на чипе Zilog Z80, и у которого графическая память, пожалуй, самая запутанная среди всех ретро-машин. Но наша статья не об этом, а о том, как всё же совместить Ассемблер и Си. Методы, описанные здесь, скорее всего подойдут и к вашему проекту. Ведь теория остается неизменной.

Поехали

Отопление майнингом. Как я грею дом бесплатно и получаю от этого дополнительный доход

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров362K

2023 год мы с колегой занимаемся монтажом отопления и вдруг на просторах интернета коллега замечает ролик про майнер, который охлаждается водой. Тут приходит одна незамысловатая мысль. Возможно ли будет интегрировать этот аппарат  в систему отопления дома и зимой получать бесплатное отопление. Как оказалось далее, ДА!)
Первые часы был небольшой шок, это вообще законно, греть дом еще и помимо этого получать прибыль с майнинга.

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

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

Читать далее

Запускаем советский процессор из журнала «Радио» с помощью Arduino

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

Привет! Меня зовут Илья Мамай, я инженер-программист в группе разработки операционных систем YADRO. В этой статье я хочу поделиться опытом некромантии сборки советского компьютера по мотивам «Микро-80», схемы которого были опубликованы в журнале «Радио». Но собирать я буду не по этим схемам. Используя их как опору и источник вдохновения, я начну с запуска процессора КР580ВМ80А (советского клона Intel 8080), определения признаков жизни и продолжу постепенным наращиванием функционала и возможностей системы. Здесь мы займемся и радиотехникой, и DIY, и программированием как самого процессора, так и современных микроконтроллеров. Но перед этим поделюсь историей, как я, будучи студентом 4 курса, дошел до этого…

Читать далее

Статическая рефлексия в C++

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

Статическая рефлексия обсуждается в грядущем C++26. Wu Yongwei демонстрирует, как применять рефлексию сейчас, и показывает примеры того, что может будет возможным в C++26.

Статическая рефлексия будет важной частью программирования времени компиляции программы на C++, как я рассказывал в октябрьском выпуске Overload. Здесь мы обсудим детально статическую рефлексию, включая, как эмулировать её прямо сейчас, до того, как она будет добавлена в Стандарт.

Читать далее

Надоело постоянно пользоваться телефоном, поэтому написал замену Google Authenticator в виде TUI

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

Мне надоело постоянно использовать Google Authenticator и переключаться между ПК и телефоном для подтверждения двухфакторной (мультифакторной) аутентификации. Красивых и функциональных TOTP (Time-based one-time password) хранилок в терминале я не нашел, поэтому сделал эту TUI, которая позволит хранить, управлять, просматривать, копировать 2FA ключ в пару нажатий с поддержкой VIM управления. Ну и просто мне было интересно, какого это создавать свои TUI приложения.

Читать далее

Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 2

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров48K

Приветствую! Эта статья является продолжением (2 частью) статьи Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 1 Если честно, я был приятно удивлен популярностью первой части: 115К просмотров за неделю и 137 голосов, которые принесли мне 21 место в рейтинге Хабра. Учитывая, что эта статья была из песочницы (отдельное спасибо @Ilha за приглашение), для меня это большой результат. Поэтому всем, кто поставил стрелочку вверх – авторское спасибо!)

В этой статье я покажу, как можно скачивать с YouTube каналы и плейлисты. Если кто-то не читал первую часть, настоятельно рекомендую это сделать. По крайней мере, если по мере чтения у вас возникнут какие-то вопросы, скорее всего там есть на них ответы. Напомню, что у нас уже есть средство, которое решает "проблему с устаревшим и изношенным оборудованием Google Global Cache" (к сожалению, оно не у всех работает, учтите), а также мы разобрались с тем, как скачивать с YouTube видео и аудио в любом качестве. Итак, начнём!

UPDATE: По решению Роскомнадзора в марте 2025 г. первая часть статьи была заблокирована на территории России. pdf-версию статьи вы можете скачать здесь

Читать далее

ChatGPT без VPN за 10 минут (и установка нативного приложения)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров177K

Уверен, многие читатели Хабра знакомы с этим способом, ведь он существует не первый день. Чтобы сэкономить ваше время, я скажу всего два слова: comss DNS.

Все остальные - велком под кат :-)

Читать далее

VSСode. Как настроить окружение для разработки в Docker на удаленном сервере через SSH

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров25K

Этот туториал рассчитан на людей, которые недавно вошли в коммерческую разработку и только начинают свою трудовую деятельность. Не исключаю, что ветеранам он также может быть полезен.

Читать далее

Dev контейнеры и с чем их едят

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров12K

Настраивать зависимости проекта на локальной системе — это не страшно. Ну, только если зависимостей немного, проект один и вы единственный разработчик в команде. Иначе — очень страшно!

В этой статье мы поговорим о контейнерной разработке с помощью dev контейнеров: что это такое, чем полезно, как настроить и как быстро это работает.

Читать далее

Отход от Airflow: почему Dagster — это оркестратор данных следующего поколения

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров9.6K

Мы запустили Dagster, потому что в мире данных наблюдается кризис инструментов и инженерии. Существует драматическое несоответствие между сложностью и критичностью данных и инструментами и процессами, которые существуют для их поддержки.

Читать далее

Информация

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