Как стать автором
Обновить
10
0.3

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 11: ↑10 и ↓1+12
Комментарии7

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

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

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

Несмотря на странное, на первый взгляд, утверждение, всё более, чем реально, и, мало того, известно около века…
Читать дальше →
Всего голосов 54: ↑52 и ↓2+70
Комментарии24

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

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

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

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

Прикоснуться к сокровищнице языка С++
Всего голосов 82: ↑81 и ↓1+92
Комментарии23

Раздел «Refactor» в IDEA

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

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

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

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

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

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

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



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

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

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

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

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



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


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


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

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

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

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

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

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

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

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

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

Заварить чай и читать
Всего голосов 64: ↑64 и ↓0+79
Комментарии15

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

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


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


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

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


Содержание


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

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

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

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

Настройки iScsi

TL/DR

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

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

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

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

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

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

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

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

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

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

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

Разглядывая JTAG: самый быстрый программный JTAG на Arduino

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

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

Так как реализация на Си преследовала исключительно образовательную цель, то скорость её работы была принесена в жертву некоторой унифицированности подходов с реализацией на Verilog. Поэтому я был несколько удивлён, когда в личном сообщении @Sergei2405 спросил, нет ли способа ускорить работу примера для микроконтроллера, чтобы применить этот код в промышленном изделии.

Субъективно, практическое применение программного JTAG мне по‑прежнему видится не вполне оправданным.
Но, во‑первых, это хороший повод рассмотреть предельные возможности микроконтроллеров.
А во‑вторых, есть формальная причина сказать, что в данной статье предлагается Решение Прикладной Задачи :)

Итак, сегодня мы поговорим про прерывания, поллинг и прочее. А протокол JTAG станет фоном для повествования.

jmp start
Всего голосов 40: ↑40 и ↓0+55
Комментарии28

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 57: ↑43 и ↓14+51
Комментарии33

Связь между Arduino по оптоволокну через SFP трансиверы

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

Изучаем оптический SFP трансивер. Рассматриваем его внутреннее устройство, элементный состав, электрические подключения. Для закрепления материала попробуем отправить и принять сообщение по оптоволокну, используя платформу Arduino.

Читать далее
Всего голосов 48: ↑47 и ↓1+68
Комментарии30

Оптимизация JavaScript. Inline Caches

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

Думаю, ни для кого не секрет, что все популярные JavaScript движки имеют схожий пайплайн выполнения кода. Выглядит он примерно следующим образом. Интерпретатор быстро компилирует JS-код в байт "на лету". Полученный байт код начинает исполняться и параллельно обрабатывается оптимизатором. Оптимизатору требуется время на такую обработку, но в итоге может получиться высоко-оптимизированный код, который будет работать в разы быстрее. В движке V8 роль интерпретатора выполняет Ignition, а оптимизатором является Turbofan. В движке Chakra, который используется в Edge, вместо одного оптимизатора целых два, SimpleJIT и FullJIT. А в JSC (Safari), аж три Baseline, DFG и FTL. Конкретная реализация в разных движка может отличаться, но принципиальная схема, в целом одинакова.

Сегодня мы будем говорить об одном из множества механизмов оптимизации, который называется Inline Caches.

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

Язык Terra — низкоуровневый партнёр Lua

Время на прочтение12 мин
Количество просмотров17K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

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

Фен и нижний подогрев. Снятие/установка BGA без реболлинга

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

Приветствую, Хабр!

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

Читать далее
Всего голосов 46: ↑45 и ↓1+68
Комментарии28

Раздача файлов на смартфоны без интернета. Опенсорсные альтернативы AirDrop

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


Формулировка задачи. У нас есть настольный компьютер и мобильные устройства под Android. Задача простая — как быстро перебросить файлы с компьютера на телефоны и планшеты. Например, скачанные подкасты и HD-фильмы 1080p, файлы apk для установки, рабочие файлы с персоналки, бэкапы. Хранилище телефона можно использовать как резервный внешний диск или как «беспроводную» флешку, которая работает по Wi-Fi.

Конечно, можно это сделать через веб-сервисы Wormhole/PairDrop/FilePizza, через телеграм/вайбер или инструменты синхронизации ПК и смартфона, такие как syncthing. Да, это удобно и привычно. Но процесс можно 1) ускорить; 2) избавиться от подключения к интернету. То есть файлы будут передаваться напрямую между устройствами, как Apple AirDrop, только лучше.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+57
Комментарии68
1
23 ...

Информация

В рейтинге
2 056-й
Зарегистрирован
Активность