Pull to refresh
9
0.3
Send message

Самодельные суперконденсаторы (ионисторы)

Level of difficultyMedium
Reading time13 min
Views33K
Картинка Freepik

Среди источников электрической энергии особое место занимают так называемые суперконденсаторы — ионисторы.

Несмотря на загадочное название, их весьма просто изготовить самостоятельно, и оно того стоит: быстрая зарядка, возможность осуществления множества циклов заряд/разряд без какого-либо разрушения (вплоть до миллионов), большая ёмкость (до десятков и даже сотен Фарад).

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

STL, allocator, его разделяемая память и её особенности

Reading time11 min
Views13K

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

Так и автор однажды задался мыслью, а что если … если произойдёт вырождение адресов сегментов разделяемой памяти в разных процессах. Вообще-то именно это происходит, когда процесс с разделяемой памятью делает fork, а как насчет разных процессов? Кроме того, не во всех системах есть fork.

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

Отличный, кстати, пример. Не то, чтобы автор сильно любил STL, но это возможность продемонстрировать компактный и всем понятный тест на работоспособность предлагаемой методики. Методики, позволяющей (как видится) существенно упростить и ускорить межпроцессное взаимодействие. Вот работает ли она и чем придётся заплатить, будем разбираться далее.
Читать дальше →

Суперскалярный стековый процессор: продолжаем скрещивать ужа и ежа

Reading time6 min
Views8.3K

Продолжение статьи, где удалось продемонстрировать, что фронтенд стековой машины вполне позволяет спрятать за ним суперскалярный процессор с OoO.
Тема данной статьи — вызов функций.
Читать дальше →

Реверс-инжиниринг  GDB для работы с Pwndbg

Reading time6 min
Views2.1K

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

Вот почему этим летом, работая в Trail of Bits, я расширил Pwndbg — плагин для GDB. Поддерживает его мой наставник Доминик Чарнота. Я добавил в инструмент две фичи, благодаря которым практическая отладка урезанных бинарников сближается с аналогичной работой, знакомой нам из работы с отладчиком в IDE. Теперь в Pwndbg интегрирован инструмент Binary Ninja, позволяющий лучше выяснять специфику GDB+Pwndbg, а также выводить дамп структур Go, чтобы отлаживать бинарники Go стало удобнее.

Читать далее

Какой роутер для OpenWrt купить в 2025 году?

Level of difficultyEasy
Reading time21 min
Views300K

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

Роутер, как и любой другой девайс, нужно покупать под запрос. Например, линуксоиды привыкли покупать ноутбуки именно под Linux, а не первый попавшийся. Также и тут: если нужен OpenWrt, то роутер тоже надо выбирать с умом, а не надеяться на то, что кастомная прошивка сделает конфетку из роутера за 700 р.

В 2023 и 2024 появились интересные роутеры, которые уже поддерживаются проектом OpenWrt. Эти роутеры сделаны на базе ARM-процессоров. Такие роутеры появились у нескольких компаний, и дальше их количество будет только увеличиваться.

Читать далее

DuckDB. Колоночная OLAP СУБД в кармане

Level of difficultyMedium
Reading time5 min
Views5K

Привет, меня зовут Антон, я старший инженер в департаменте аналитических решений ЮMoney. В компании мы используем технологию MSSQL OLAP-кубов SSAS, которая хорошо себя зарекомендовала — она сравнительно легко развёртывается и достаточно производительная. Но есть ряд минусов: Microsoft прекратил развивать её примерно в прошлом десятилетии, технология требует производительных серверов, ну и, конечно, вопрос зависимости от иностранного вендора тоже стоит остро. Поэтому, посматривая по сторонам в поисках альтернативы, я решил попробовать недавно появившуюся технологию DuckDB. Особых надежд не было, но хотелось понять, на каком она уровне по сравнению с привычными для меня инструментами. 

Читать далее

Как посчитать синус быстрее всех на хабре

Reading time15 min
Views35K

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

Как мы делали гибридную обработку звука: всё об аудиософте в SberBoom и почему просто годных излучателей недостаточно

Level of difficultyMedium
Reading time11 min
Views2.9K

40-ваттный всенаправленный звук в SberBoom — профессиональная гордость нашей команды. В прошлой статье мы рассказали, как придумали акустическую архитектуру. А в тут рассказали, как устроено звуковоспроизведение в ядре Linux. В этот раз объясним из каких софтовых решений складывается звук SberBoom. Почему стандартные методы коррекции звука — не наш выбор? Как реальность расходится с вендорской документацией и зачем реверсинжинирить усилители? Читайте под катом.

Читать далее

Светящиеся конденсаторы и дисплеи на их основе (в том числе DIY) на любой поверхности? Почему нет…

Level of difficultyMedium
Reading time11 min
Views12K
Картинка Freepik

Что, если я скажу вам, что существуют светящиеся конденсаторы, которые могут быть использованы в качестве элементов дисплеев?

Несмотря на странное, на первый взгляд, утверждение, всё более, чем реально, и, мало того, известно около века…
Читать дальше →

Тысяча и одна библиотека С++

Reading time65 min
Views47K

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++

Раздел «Refactor» в IDEA

Reading time20 min
Views17K

Эта статья - краткий обзор по разделу меню "Refactor" в IDEA для начинающих.

Рассматриваются основные способы рефакторинга для Java-файлов, для большинства способов рефакторинга приведены анимированные картинки и примеры использованного кода.

Осторожно, много тяжелых gif-картинок.

Читать далее

Компилятор на JavaScript с использованием ANTLR

Reading time19 min
Views17K



В начале этого года я присоединилась к команде, работающей над MongoDB Compass — графическим интерфейсом для MongoDB. Пользователи Compass через Intercom запросили инструмент, позволяющий писать запросы к базе данных, используя любой удобный им язык программирования, поддерживаемый драйвером MongoDB. То есть нам нужна была возможность трансформировать (компилировать) язык Mongo Shell в другие языки и обратно.

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

Примеры GraphQL на Java для начинающих [со Spring Boot]

Reading time8 min
Views33K

В этой статье мы рассмотрим пример GraphQL на Java и создадим простой сервер GraphQL со Spring Boot.



Таким цыпочкам тоже нравятся примеры GraphQL на Java со Spring Boot!


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


В этой статье мы рассмотрим пример GraphQL на Java и создадим простой сервер GraphQL со Spring Boot.

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

FUSE: как написать свою файловую систему

Level of difficultyHard
Reading time21 min
Views19K

Меня зовут Максим, я ведущий разработчик в VK. Занимаюсь инфраструктурой доставки электронной почты в проекте Mail.ru. Наша команда разработала и довела до эксплуатации файловую систему (ФС) на FUSE в рамках проекта распределённой почтовой очереди. В проекте требовалось реализовать сетевую ФС, которая сохраняет данные в трёх копиях, в разных ЦОДах. Цель — повысить отказоустойчивость, чтобы даже полный выход из строя одного ЦОДа не приводил к нарушениям SLA. Эта статья для всех, кто интересуется файловыми системами и хранением данных. Мы обсудим:

- зачем писать свою ФС;

- как написать свою ФС с помощью фреймворка FUSE;

- какие подводные камни есть у эксплуатации FUSE в production.

Эта статья — результат трёх лет разработки ФС. Сейчас самое время заварить чай, рассказ будет долгим. 

Заварить чай и читать

Что такое Spring Framework? От внедрения зависимостей до Web MVC

Reading time41 min
Views568K


Вы можете использовать это руководство для различных целей:


  • Чтобы понять, что такое Spring Framework
  • Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC
  • Это также исчерпывающий FAQ (Перечень часто задаваемых вопросов)

Примечание: Статья ~ 9000 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже. И даже на компьютере ешь читай этого слона по одному кусочку за раз :-)


Содержание


  • Введение
  • Основы внедрения зависимостей
  • Контейнер Spring IOC / Dependency Injection
  • Spring AOP (Аспектно-ориентированное программирование) и прокси
  • Управление ресурсами Spring
  • Spring Web MVC
  • Дополнительные модули Spring Framework
  • Spring Framework: часто задаваемые вопросы
  • Заключение
Читать дальше →

Настройка iScsi в L3-сети для эффективной утилизации возможностей канала и СХД

Reading time6 min
Views15K

После тестирования NVME over TCP, описанной тут https://habr.com/ru/companies/beeline_tech/articles/770174/, решили проверить, насколько хорошо iScsi в L3-сети работает по сравнение со специализированным решение на FC.

Настройки iScsi

TL/DR

Машина в Bios переведена на профиль HPC (был пустой).

На уровне OS и iscsid сделаны такие изменения

Читать далее

Потрясающе быстрые теневые стеки для Go

Level of difficultyMedium
Reading time7 min
Views3.3K

Программные теневые стеки могут обеспечить до 8 раз более быструю трассировку стека в Go рантайме по сравнению с раскруткой указателя фрейма, которое было реализовано в go1.21. Это не означает, что данная идея должна сразу же вырваться из лаборатории, но она предлагает интересный взгляд на потенциальное будущее трассировки стека с аппаратным ускорением через теневые стеки.

Читать далее

Quansheng UV-K5/K6, трансивер, из которого можно сделать что угодно: аппаратные доработки

Reading time7 min
Views23K

Привет, Хабр! В прошлый раз мы рассказывали о трансивере Quansheng UV-K5/K6 и его возможностях. Сегодняшняя статья посвящена аппаратным доработкам этого дешёвого и доступного китайского девайса. С их помощью можно расширить принимаемый диапазон, обзавестись большим количеством памяти для контактов, реализовать своеобразный TeamViewer для удалённого управления трансивером и обеспечить работу в сети APRS. Приятного чтения!

Читать далее

Почему для меня так важен алгоритм CORDIC

Level of difficultyMedium
Reading time8 min
Views21K

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

Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
Читать дальше →

HackBat: мощная DIY альтернатива Flipper Zero на базе открытого исходного кода

Reading time4 min
Views34K

Встречайте HackBat: DIY (сделай сам) устройство, основанное на открытом исходном коде и аппаратном обеспечении, разработанное Пабло Трухильо Хуаном как мощная альтернатива Flipper Zero. Оно пропагандирует свободу разработки и модификации, обеспечивая пользователям возможность сами создавать и настраивать свои устройства. В отличие от Flipper Zero, HackBat позволяет пользователям самим программировать MCU и взаимодействовать с Wi-Fi и RF-трансиверами, что обеспечивает большую гибкость и возможности для настройки.

Самое интересное в этом небольшом проекте — это то, насколько много общего у него с Flipper Zero. Hackbat также позиционируется в качестве "швейцарского армейского ножа" для проведения тестов на проникновение и использует некоторые из тех же функций, что и NFC. Однако, в отличие от Flipper Zero, Hackbat является открытым проектом и стоит дешевле, чем его родственник с ценником в $169. Фактически, после недавнего исчезновения Flipper One, люди, которые такие устройства, могут обнаружить, что Hackbat является подходящей заменой.

Пабло Трухильо опубликовал проект на Hackster, где подробно рассказал о проекте. Основной идеей Hackbat является создание устройств для тестирования на проникновение, доступных для всех.

Читать далее

Information

Rating
3,799-th
Registered
Activity