Из легаси монолита в модульную архитектуру: проводим рефакторинг и наводим порядок в проекте

Привет, Хабр! Меня зовут Владимир Раду, я Backend-разработчик в Рунити. Однажды мы с командой встали перед дилеммой: как навести порядок внутри монолита. Админка одного из сайтов нашей группы компаний — большой и довольно возрастной проект. Он охватывает множество задач и сценариев: от управления ценами до редактирования контента. Со временем стало очевидно, что нужно снижать связанность компонентов и разводить бизнес-части. Так появилась идея перейти к модульной архитектуре. Внутри о том, что у нас получилось из рефакторинга легаси, как мы выстраивали работу с модулями и объединяли в логичную структуру разрозненные части системы. Будет полезно разработчикам, которые работают с легаси и хотят встать на путь оптимизации проекта — без переписывания с нуля.

https://habr.com/ru/companies/runity/articles/917150/

#рефакторинг #монолит #модули #легаси #php #laravel #папки #user_story #пакеты #модульная_архитектура

Из легаси монолита в модульную архитектуру: проводим рефакторинг и наводим порядок в проекте

Привет, Хабр! Меня зовут Владимир Раду, я Backend-разработчик в Рунити. Однажды мы с командой встали перед дилеммой: как навести порядок внутри монолита. Админка одного из сайтов нашей группы компаний...

Хабр

[Перевод] Компилятор WebAssembly, который помещается в один твит

▍ Введение Наш первый «компилятор WebAssembly в твите» имел длину 269 байт; с тех пор мы смогли снизить её всего до 192 байтов. В результате мы получили компилятор, получающий арифметическое выражение, записанное в обратной польской нотации, и компилирующий его в валидный модуль WebAssembly. Этот модуль экспортирует одну функцию, которая возвращает результат исходного арифметического выражения. Компилятор выглядит так: let c=(b,l)=>WebAssembly.instantiate(new Int8Array(
[,97,115,109,1,,,,1,5,1,96,,1,127,3,2,1,,7,4,1,,,,10,
l=(b=b.split` `.flatMap(t=>t>-1?[65,t]:107+'-*/'.indexOf(t)))
.length+4,1,l-2,,...b,11])) А вот пример его использования: (await c('11 11 1 - + 4 * 2 /')).instance.exports['']() Но это не просто хитрый трюк — если вы начнёте разбираться, как работает этот код, то на удивление много узнаете о WebAssembly! В этом посте мы объясним, как это всё работает, пошагово деобфусцируя код.

https://habr.com/ru/companies/ruvds/articles/877556/

#кодгольфинг #code_golf #трюки_в_коде #разреженные_массивы #модули #компиляция_модулей #ruvds_перевод

Компилятор WebAssembly, который помещается в один твит

▍ Введение Наш первый «компилятор WebAssembly в твите» имел длину 269 байт; с тех пор мы смогли снизить её всего до 192 байтов. В результате мы получили компилятор, получающий арифметическое...

Хабр

Модули INA226: действительно ли «хорошие» хороши, а «плохие» плохи?

По интернету ходят упорные слухи, что с модулями на INA226 всё плохо: поддельные чипы, отбраковка, неправильная схемотехника, откровенный треш типа припайки микросхемы не той стороной и т. д. В моём распоряжении оказались несколько модулей INA226, так называемых «плохих» и «хороших» по той же классификации из интернета. Сегодня мы их протестируем и посмотрим что же они выдают на самом деле и можно ли их вообще использовать для измерения тока и напряжения в своих проектах. А заодно попытаемся установить, что же за микросхемы установлены в этих модулях.

https://habr.com/ru/companies/timeweb/articles/855472/

#timeweb_статьи #INA226 #TI #Texas_Instruments #модули #шунт #3PEAK #TPA626 #SILERGY #SQ52201 #измерение #напряжение #ток #калибровка #тестирование #электроника #AD584 #UNIT #UT61E+

Модули INA226: действительно ли «хорошие» хороши, а «плохие» плохи?

По интернету ходят упорные слухи, что с модулями на INA226 всё плохо: поддельные чипы, отбраковка, неправильная схемотехника, откровенный треш типа припайки микросхемы не той стороной и т. д. В моём...

Хабр

Закон распределения делителей числа (расширенная версия)

В арифметике известны элементарные действия с числами (+), (–), (×), (/) и др., использование которых при заданных исходных данных дает нам возможность получать определенные результаты: сумму, разность, произведение, частное. Обратное действие с результатами в качестве исходных данных возможно далеко не всегда. Например, возведение в третью степень числа 7 3 = 343, обратным действием имеет извлечение из результата корня третьей степени ( 343 ) 1/3 = 7. При заданных результатах определить какими были исходные данные не всегда возможно. Для суммы даже двух слагаемых 7 + 6 = 13 такого единственного обратного действия нет. Для числа 13 мы можем получить очень разные исходные 13 = 1+12 = 2+11 = 3+10 = 4 +9 = 5 + 8 = 6+7. С умножением в качестве исходных составных чисел картина похожая, но если исходными сомножителями взяты простые числа, то обратной операцией для произведения является действие, называемое факторизацией числа – результата умножения. К сожалению, на сегодняшний день действие факторизации не может быть задано какими-то простыми вычислениями, а очень большие числа – результаты (сотни цифр в описании) вообще не могут быть факторизованы. Как выполнить поиск простых делителей результата-произведения мы сегодня не знаем. Такие делители, вообще говоря, как-то распределены в числовых рядах. Например, в натуральном ряде чисел (НРЧ) или в последовательности нечетных чисел (ПНЧ) простые числа-делители и их кратные имеют достаточно регулярные распределения, каждое со своим шагом. Задавая произведение простых чисел N = p˖q˖h˖s , мы понимаем, что каждое из p, q, h, s меньше самого N . Если ограничить начальный фрагмент НРЧ или ПНЧ значением N , то в пределах выделенного фрагмента будут присутствовать кратные делителей с возрастающими от 1 коэффициентами (для ПНЧ коэффициенты будут нечетными). Сможем ли мы увидеть и выделить такие кратные делителей N? Они ведь нам неизвестны. Сегодня ответ на этот вопрос положителен. В 2014 году мной на Хабре был опубликован закон распределения делителей (ЗРД) натурального числа N в НРЧ. Применение закона позволяет получать для заданного натурального N его простые делители и их кратные в НРЧ. Ниже я кратко повторю публикацию 2014 года и приведу расширенную версию ЗРД на ряд целых чисел N. Читать далее.

https://habr.com/ru/articles/851270/

#факторизация_чисел #числовые_последовательности #алгебраические_структуры #интервалы #делители #кратные_делителей #модули #модель #квадраты #модулярная_арифметика

Закон распределения делителей числа (расширенная версия)

В арифметике известны элементарные действия с числами (+), (–), (×), (/) и др., использование которых при заданных исходных данных дает нам возможность получать определенные результаты: сумму,...

Хабр

Полезные модули PowerShell. Переводчик в консоли, SpeedTest, Syslog и другие

Всем привет! Порой, написать графическую форму для консольного приложения может оказаться очень удобным решением, тем самым не нужно запоминать все ключи программы, особенно, если пользоваться им приходится изредка, тем самым автоматизируя работу с данным приложением в дальнейшем. Но, ситуация может быть обратной, когда приложение имеет только графический интерфейс, а вам нужно получить вывод его работы в консоли, например, для возможности передачи метрик в систему мониторинга. С тех пор как начал проводить все больше времени в консоли, заметил, что становится менее удобно переключаться на ранее привычные инструменты, лишний раз использовать мышь, держать открытыми излишние приложения или вкладки в браузере, особенно, если работаешь на удаленной машине без прямого доступа к графическому интерфейсу. У меня накопилась небольшая коллекция полезных модулей, большинство из которых написаны совсем недавно, успел привыкнуть при регулярном использовании и хотелось бы ими поделиться. Осознавая, что тенденция ухода Windows систем на территории РФ растет, тем не менее думаю еще очень много людей, кто так же как и я продолжают использовать данную систему и автоматизировать свою работу, возможно, представленные модули так же смогут пригодятся. Все модули опубликованы в репозитории на GitHub и менеджере пакетов Nuget , откуда их можно установить одной командой.

https://habr.com/ru/articles/794999/

#powershell #консольные_приложения #консоль_windows #модули #переводчик #crystaldiskinfo #syslog #windows_api #everything

Полезные модули PowerShell. Переводчик в консоли, SpeedTest, Syslog и другие

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

Хабр

Пишем Ansible-модули для управления разными системами хранения данных через Swordfish

Большинство современных систем хранения данных (СХД) предоставляют REST API для управления ими, включая настройку, конфигурирование, выполнение различных команд, получение логов, работу с пользователями и т.д. В зависимости от производителя СХД REST API могут отличаться друг от друга. Если вы используете несколько разных систем, их одновременная поддержка становится проблемой: нужно учитывать многообразие протоколов, интерфейсов, команд и способов взаимодействия с API. Меня зовут Александр Пономарев, вместе с группой студентов СПбПУ им. Петра Великого на базе Лаборатории YADRO мы изучали способы сделать управление разными СХД менее трудоемким. Вариант, на котором мы остановились, — использовать системы, которые удовлетворяют спецификации Swordfish, в связке с Ansible. Подробнее о проекте , который мы выполняли с инженерами компании и преподавателями университета, рассказываю под катом.

https://habr.com/ru/companies/yadro/articles/784070/

#software_engineering #ansible #swordfish #модули #схд #хранение_данных #оптимизация

Пишем Ansible-модули для управления разными системами хранения данных через Swordfish

Большинство современных систем хранения данных (СХД) предоставляют REST API для управления ими, включая настройку, конфигурирование, выполнение различных команд, получение логов, работу с...

Хабр