habrahabr
GRASP: почему настоящая архитектура начинается не с SOLID

Многие инженеры начинают своё архитектурное мышление с SOLID. Затем изучают GoF-паттерны. Но всё равно остаётся ощущение, что чего-то не хватает: распределения ответственности, логики построения модели, связи структуры и поведения. И вот тут GRASP — это как раз то недостающее звено.Хочу начать с личной предыстории.Давным-давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие.Также не обошли меня и класс…

  • вторник, 15 апреля 2025 г. в 00:00:12
habrahabr
Им не место на помойке: как и зачем я даю новую жизнь кнопочным смартфонам на Windows Mobile

Подписчики часто дарят мне интересные гаджеты, чтобы я написал о них интересную статью и снял ролик. У большинства подаренных устройств есть определённые нюансы, и зачастую они требуют ремонта или хотя бы базового обслуживания.Недавно подписчица с «Пикабу», Кристина, подарила мне коробку с телефонами своего отца, которые ему уже давно не нужны. И в этой коробке оказался достаточно редкий в наше время гость: кнопочный смартфон RoverPC M5 с Windows Mobile на борту. У смартфона полностью умер акку…

  • вторник, 15 апреля 2025 г. в 00:00:11
habrahabr
Что я понял за три года работы на чужой стартап — мои 10 выводов

В этой статье поделюсь своим опытом работы в чужом стартапе, где я проработал почти три года главным редактором: какие меня ждали разочарования, какие совершил ошибки и почему надо было уйти из проекта еще до того, как он закроется.Почему я пошел работать в этот стартап за очень маленькие деньги? Мне платили от 30 до 60 тыс руб в мес.Была перспектива релокации на Кипр — это моя цель, к которой я иду уже почти 5 лет.Я должен был получить опцион 2% — при закрытии компании её оценка составляла 5 м…

  • вторник, 15 апреля 2025 г. в 00:00:10
golang
Сервис поиска за три недели: как сделать и не пожалеть через год

Как запустить поисковый сервис, если у тебя всего три недели, а данные нужно агрегировать с десятков источников, каждый из которых работает по своим правилам? Как обойти жёсткие лимиты партнёров, которые ограничивают запросы в 500 RPM и p99 до 5 секунд, когда для быстрой загрузки первых результатов нужно минимум 1000 RPM? Как справиться с геопоиском, когда традиционные решения вроде Elasticsearch не подходят?В 2022 году мы в 2ГИС запустили сервис бронирования Отелло, и перед нами стояла амбицио…

  • вторник, 15 апреля 2025 г. в 00:00:08
golang
Обработка паник в горутинах

Привет, Хабр!Сегодня рассмотрим, как безопасно запускать горутины, перехватывать в них паники, логировать их со стек трейсом и не дать одной багнутой функции завалить весь сервис. Почему recover() не спасёт вас от паники в горутинеКогда ты только знакомишься с panic() и recover(), всё кажется прямолинейным:«Если где‑то в коде случится паника, я могу поставить defer + recover, и всё будет красиво обработано». Но в Go есть одно принципиально важное правило: recover() работает только в пределах то…

  • вторник, 15 апреля 2025 г. в 00:00:08
javascript
Параллельный цикл на worker. Многопоточность JS

Мне очень нравится JavaScript своей легкостью, доступностью и функциональностью. Он перекрывает 90% всех моих потребностей в программировании. Спектр решаемых с помощью него задач огромен, и в том числе, иногда возникают задачи в которых необходимо изменить каждый элемент массива независимо от остальных элементов. Одно из типовых решений этой задачи через цикл или метод map.Пример программы с простым циклом//Функция, изменяющая элемент массива function f(a) { let a0 = 1; for (let i = 0; i &…

  • вторник, 15 апреля 2025 г. в 00:00:06
javascript
Как я oauth proxy навайбокодил

Чем хорош TRMNL -- так это возможностью выводить что-то своё за считанные минуты.С помощью "Private Plugins" можно взять ссылку, что отдаёт JSON (недавно добавили поддержку XML и сырого текста), рисуем простой шаблон на HTML с Liquid, готово! Для пущей динамики возможе неще и javascript, что позволяет выводить графики. Можно опубликовать для других пользователей, можно брать опубликованное другими и либо использовать как есть -- либо подправить под себя. Раздолье!График сахара -- пять м…

  • вторник, 15 апреля 2025 г. в 00:00:05
javascript
Плавность как фича: сравниваем фреймворки по анимации UI на реальных кейсах

UI-анимации — это не только про красоту, но и про восприятие, структуру и даже скорость. В этой статье рассматриваются популярные фреймворки для создания анимаций в интерфейсах: CSS, Framer Motion, GSAP и Motion One. Сравнение проводится на реальных кейсах с кодом, примерами и субъективным мнением, где каждый инструмент показывает свои сильные и слабые стороны. В конце — небольшие выводы и неожиданные результаты. Когда "просто появляется" уже не работаетПару лет назад дизайнер принес м…

  • вторник, 15 апреля 2025 г. в 00:00:03
javascript
Reconciliation в React, обновления виртуального DOM: что это и как работает под капотом простыми сл…

Привет, меня зовут Дмитрий, я React-разработчик и в статье хочу снова рассмотреть тему, которая у всех на слуху, однако «подкапотной» информации по ней не так много. Всем известно, что React обновляет компоненты, когда это необходимо, но как это происходит на самом деле, «под капотом»? Постараюсь описать суть простыми словами. Давайте разберемся вместе — что мне удалось узнать.Reconciliation в React — это процесс обновления виртуального DOM, при котором React определяет, какие части интерфейса …

  • вторник, 15 апреля 2025 г. в 00:00:02