Задать вопрос
  • Как разбить транзакцию по микросервисам сохранив консистентность данных?

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

    Теперь представьте магию. Вы создаете заказ, который приводит к множеству параллельных, последовательных и очень сложно-разветвленных задач (резервирование на складе, отправка уведомлений, списание средств ит.п), в глубине которых что-то обламывается. Поскольку сервисы изолированы и почти ничего не знают друг о друге, надо всех причастных заставить вернуть "как было" через общий канал. Обломавшийся микросервис, зная ключ операции, кидает в шину сообщение "операция (id) не удалась, без подробностей". Далее все микросервисы: 1) откатывают операцию по id, если уже сделали 2) перестают реагировать на такой id, если еще не дошли запросы.
    Итого: система вернулась в первоначальное состояние в целостном виде.

    За все надо платить: на каждую операцию обязательно тесты и двойная работа по добавлению обратных операций, иногда нетривиальной логики (например, в части отправки сообщений). Если что-то пошло не так, должны быть очень качественные логи - отладчиком такое не пройти.
    Ответ написан
    Комментировать
  • На linux есть вирусы?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если вы собираетесь переходить на линукс, то в первую очередь надно научиться пользоваться поисковиком. Вы удивитесь сколько материала найдете задав эти четыре слова в поисковик. Приведу только пару из них:
    "Вирусы для *n*x существуют!" (habr.com)
    "Про вирусы для Linux" (ubuntu-repository.blogspot.com)

    Говоря коротко: Вирусы на linux есть, но подхватить какой-либо из них вероятность меньше.
    Ответ написан
    Комментировать
  • На linux есть вирусы?

    leinariys
    @leinariys
    разработка на джаве + спринг + stm32
    Да, вирусы есть.
    Ответ написан
    7 комментариев
  • Найти закономерность в этих числах?

    X (K) = X (K-1) + 10*K +35
    Ответ написан
    Комментировать
  • Найти закономерность в этих числах?

    @kantenbors
    155-100=55
    220-155=65
    295-220=75
    380-295=85
    475-380=95
    Шаг каждый раз увеличивается на 10.
    Ответ написан
    Комментировать
  • Не стартует apache как только прописываю модуль ioncube?

    PavelMonro
    @PavelMonro
    А логи посмотреть?
    /var/log/apache2/error.log

    Включить вывод всех ошибок?
    Ответ написан
    3 комментария
  • Стоит ли хранить скетчевский дизайн в Git? Если "нет" - то какие могут быть варианты для создания архива версий дизайна?

    Ordinatus
    @Ordinatus
    Инженер-телепат
    Для хранения мультимедиа, бинарных (любых других с форматом отличным от текстового контента) файлов в Git существует Large File System (Git LFS). Он создан специально для этого.
    Ответ написан
    Комментировать
  • Логика на клиенте или на сервере?

    AlexMaxTM
    @AlexMaxTM
    Думаю ответ есть уже в самом вопросе, поскольку были выделены "Преимущества на клиенте" и "Недостатки на сервере". О преимуществах на сервере, и о недостатках на клиенте ни слова не сказано - значит выбор уже был сделан изначально :)
    Ответ написан
    Комментировать
  • Когда использовать jpg а когда png?

    lukoie
    @lukoie
    если сравнивать только эти два формата, то их отличие в двух нюансах:
    1 поддержка прозрачности у png, чего jpg не может
    2 метод сжатия изображения у jpg зависит от соседних пикселей. Потому если у изображения есть четкие линии, jpg сделает их нечеткими, а png сохранит такие переходы.
    Потому, если у Вас просто фоточки, и/или стоит задача экономии - используйте jpg, а если есть технические чертежи, или тем более прозрачности - png.
    Ответ написан
    4 комментария
  • Когда использовать jpg а когда png?

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

    JPEG для фоточек, и всего такого, где много мелких разноцветностей.
    Ответ написан
    Комментировать
  • Чем восстановить жесткий диск на Mac (APFS)?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Знаю, что в теории можно удалить диски, отформатировать, что бы избавиться от ошибок, а потом попытаться восстановить данные, но не уверен, что это сработает с APFS диском, рисковать не хочется.

    Очень хорошо, что вы написали сюда перед тем, как прислушаться к этому "доброму совету".
    Ни в коем случае так не делайте! Любые операции записи (а форматирование их подразумевает) уничтожают данные (как минимум, частично) и либо снижают шансы на восстановление в целом, либо ухудшают возможный результат.

    С учётом того, что файлы вы формально не удаляли, т.е. есть шанс того, что ФС цела, вы можете, воспользоваться Р.сэйвером, он бесплатный и умеет читать данные с APFS. Но для этого диск потребуется вынуть и подключить к машине с Виндоус:
    https://rlab.ru/tools/rsaver.html

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

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

    Если несмотря на это, вы хотите рискнуть, вы можете самостоятельно провести его диагностику с помощью R.tester'а, но для этого тоже потребуется Windows:
    https://rlab.ru/tools/rtester.html

    P.S.
    Вы не упомянули какой именно Мак вы используете, так что на всякий случай убедитесь, что у вас не используется Fusion drive. При неграмотном его разделении последствия обычно печальные, мы регулярно с ними сталкиваемся: https://habr.com/ru/post/374509/
    Ответ написан
    1 комментарий
  • Выделил redis 300mb оперативы и когда остальная система запрашивает память, то иногда влазит в память redis и валится. Что делать?

    kotomyava
    @kotomyava
    Системный администратор
    Redis error: OOM command not allowed when used memory > 'maxmemory'

    У вас происходит не то, что вы, вероятно, думаете.

    У вас просто кончается выделенная redis память, т.е. вы упираетесь в maxmemory 300000000.
    Надо или разобраться, что туда в таком количестве пишется(или почему не удаляется).
    Или изменить стратегию удаления данных из него, например, удалять не только что expire, как по умолчанию, а всё что угодно, что давно не использовалось(maxmemory-policy allkeys-lru, !данные будут пропадать!)
    Или выделять больше памяти.
    Или не использовать его как базу данных, т.к. он не для того нужен... =)

    Также, в определённых случаях, redis может использовать до 2х раз больше памяти, чем в него записано данных, если идёт большое количество операций записи.
    Ответ написан
    Комментировать
  • Apache очень долго грузит страницы, как исправить?

    @MechanID
    Админ хостинг провайдера
    Надеваю фуражку КО
    1 Найти причину.
    2 Исправить ее.

    Теперь по сути. Такое поведение может быть вызвано разными проблемами, нехватка ресурсов на впс, тормоза mysql, неправильная настройка apache+php, и много чего еще. Каждую версию надо проверять. Предоставленной вами информации хватает только на догадки.
    Ответ написан
    Комментировать
  • Apache очень долго грузит страницы, как исправить?

    alekstar79
    @alekstar79
    А почему сразу apache, что на других серверах, например nginx было не так? То есть я о том, как формулируется вопрос? И ты предполагаешь сразу что виноват апач? Тогда поставь nginx + php-fpm А так проблема может быть в чем угодно. Вот так на вскидку и не скажешь...
    Ответ написан
    1 комментарий
  • Легаси-монстр. Как побеждаете?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Нынче удобный способ с вебсервисами.
    Ищете функционал, который можно выделить в отдельный компонент, пишете компонент, в старом коде меняете API и перенаправляете на новый компонент.

    Повторить до тех пор, пока от старого кода ничего не останется.

    Но я соглашусь с RidgeA - бизнес не будет выделять на это деньги просто так.
    Сперва нужно поработать над этим, убедить бизнес, что технический долг это не пустые слова и вы все ближе к блокеру, когда из-за сложности проекта все больше и больше вещей завязывается не на знания технологий, а на ключевых людей, которые просто знают нюансы проекта. Увольнение любого такого человека приводят к огромным рискам для проекта в целом. Предложить варианты, как это потихоньку будет убираться и потихоньку к этому идти.
    Ответ написан
    Комментировать
  • Легаси-монстр. Как побеждаете?

    @MasterMike
    Из вопроса не очень понятно, что именно составляет ваш интерес отрефакторить этот проект.

    Если вы чисто по доброте душевной хотите помочь бизнесу, то не надо этого делать, иначе вы на своем личном опыте осознаете фразу "инициатива наказуема" )

    Касательно сути вопроса поддержу уже сказавших свое мнение: постепенное помодульное переписывание старого кода на современный лад. Старый код работает вместе с новым и так далее, пока от legacy ничего не останется.
    Ответ написан
    3 комментария
  • Легаси-монстр. Как побеждаете?

    @RidgeA
    Немного банальностей:
    1. Бизнес не даст ресурсов на переписывание проекта с 0: время и большие риски
    2. Бизнесу как правило все-равно какое говно там крутится, лишь бы деньги приносило.
    3. Если более-менее адекватное руководство - нужно донести идею постепенного рефакторинга кода по мере необходимости в процессе фикса багов и разработки новых фич и тем самым аргументировать что на разработку новых фич/фикс багов нужно больше времени.

    Как я бы делал:
    1. Тесты на существующие функции (если возможно, видел методы в контроллерах с мешаниной вызовов методов моделей, созданием DTO и сохранением их через репозиторий, прямых http-запросов и запросов в бд на 1000+ строк, покрыть такое тестами - невозможно)
    2. Составить план рефакторинга, где отметить что и где надо сделать, коротко, в основном для команды разработчиков.
    3. Постепенно рефакторить старый код по мере взаимодействия с ним.
    4. Новый код - писать сразу правильно, для взаимодействия со старым кодом где нет возможности/времени его переделать - делать какие-то адаптеры, что бы не распространять токсичный код.
    5. Как оперативная мера защиты от SQL иньекций можно поставить что-то вроде этого https://github.com/nbs-system/naxsi
    6. Мониторинг кода, который не используется - pinba.org , по мере обнаружения такого кода - удалять безвозвратно (в крайнем случае есть VCS, я надеюсь). Начать с более высокоуровнего кода - контроллеры, напримерю. Плюс IDE в этом могут помочь и grep.
    7. Как вариант - новые фичи можно пилить в отдельном проекте (v2), крутить оба и постепенно переходить на новый, со временем старый (v1) выкинуть (и начать делать новый - v3 :-) )
    Ответ написан
    3 комментария
  • В какой программе компилировать .с файлы для консоли?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    стандартный gcc можетгуглите кросс-компиляция.
    GCC это умеет
    Ответ написан
    Комментировать