Задать вопрос
  • Как понять микросервисы?

    @deliro
    Как понять микросервисы?

    Прочитать соответствующую книгу (а лучше ещё парочку про DDD или хотя бы посмотреть этот доклад)

    Затем ответить на несколько вопросов:
    1. Почему вы решили, что микросервисы что-то вам дадут?
    2. Есть ли у вас настоящие причины для микросервисной архитектуры? (А именно: зоопарк технологий с невозможностью написать 99% на одном языке; более тысячи разработчиков; сложность выкатки монолита в виде часов прогонов CI/CD — тестов, билда, деплоя, стопоров выкатки в виде кучи проблем из-за разработчиков; вы такие же большие как гугл, убер, амазон и т.п.). Или вам просто нравится модное слово "микросервисы"?

    Не получится создать хорошую микросервисную архитектуру без умения создать хороший модульный монолит. В этом случае вы получите не только все проблемы плохого монолита: высокая связанность, каскадные падения, долгий CI/CD; но и все проблемы микросервисов: их надо оркестрировать (у вас же есть команда, которая будет поддерживать инфраструктуру?); каждому микросервису нужно своё CI/CD (и хорошее); сеть может (и будет) лагать и обрываться; длительность запросов увеличится на порядок(ки) (особенно если выбрать какой-нибудь JSON-RPC over HTTP); нужно предусмотреть failover strategy (например, идемпотентные ретраи. Вы же уже знаете про correlation id, саги и что делать, если прилетел network error на запрос в другой сервис "списать 10 баксов"?) и circuit breakers; трейсы и логи, которые не пришлось бы искать по сотням .log файлов от каждого сервиса; бизнес-логика расползётся по разным микросервисам и нарушит SRP (пофиг, что нарушит, важнее то, что это починить будет сильно сложнее). Список можно продолжать долго.
    Ответ написан
    11 комментариев
  • Проблемы с гитом. Что делать?

    karabanov
    @karabanov
    Системный администратор
    Переведи сообщение на русский и сделай то, что он тебя просит.
    Ответ написан
    Комментировать
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос одновременно дебильный и нормальный.
    Автор просто не может нормально словами написать, чего хочет.
    Для современного поколения, воспитанного ютубой, это нормально.
    Если бы вопрос можно было задать с помощью слов "гы-гы", "круто, чувак" и смайликов, то у него бы все получилось.
    А пока приходится использовать интеллект на принимающей стороне, чтобы понять, что он там мычит.

    А мычит он не про сам шелл, а про используемый в нем скриптовый язык.
    И ответ получается очень простой - для некоторых задач Bash scripting language тупо подходит лучше. Не говоря уже про интеграцию скриптового языка баш в командную оболочку баш, какой никогда не добиться с помощью "обёрток".

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

    Так что да - или легаси, или тупо адекватность задаче.

    Апд. В ходе этой дискуссии я сообразил одну очень важную вещь. Язык программирования по определению является вторичным по отношению к командной оболочке. Главное в баше - это все-таки возможность запускать команды и позволять им взаимодействовать друг с другом. А язык уже построен вокруг этой основной задачи. Если вы попытаетесь вкрячить этот функционал в какой-то из языков программирования общего назначения, вы испортите и оболочку, и язык.
    Ответ написан
    21 комментарий
  • Как правильно решить конфликты в dev ветке для двух веток в разработке?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Использовать подходы Git flow или Github flow
    Ответ написан
    Комментировать
  • Можно управлять git repository через web?

    Вопрос странный. Может вам нужна web ide с поддержкой git? Ну к примеру, https://github.com/features/codespaces
    Ответ написан
    Комментировать
  • Почему canvas рисует неправильные пропорции?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не показали HTML-разметку. Где там элемент canvas, с какими атрибутами?
    По умолчанию у элемента размеры 300х150. Стилями вы его растягиваете до 450х450, вот он и вытягивается, изумлённо, по вертикали.

    Поможет указать размер: <canvas width="450" height="450"></canvas>

    p.s. толщина линий по краям canvas будет вполовину меньше от остальных, т.к. пол-линии оказывается за кадром.
    Иллюстрация
    Ответ написан
    Комментировать
  • Стенд для изучения DevOps на базе Linux-серверов. С чего начать изучение?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Поддержу Sand : берём Devops Roadmap и подтягиваем скиллы сверху вниз. Если хочется продолжать работать дальше в сетевом администрировании (вакансии Network Engineer с требованием знания Ansible/Salt были и 7 лет назад, только не у нас), то должны научиться раскатывать конфиги из гита и мониторить всё описанное хозяйство со сбором логов.
    Ответ написан
    Комментировать
  • Как и на чем реализовать сервер для стриминга видео?

    @KoreanGuy
    лол. Написать video streaming платформу с нуля на вебсокетах. Без обид, но одно это предложение уже говорит о том, что вы не сможете этого сделать. Стриминг не делается на tcp никогда. Вообще мало кто сможет такое сделать, а уж в одного так и подавно. Есть простое правило: если стриминг видео является не основой вашего бизнеса (как, например, у твича, юдеми, и тп), а просто каким-то доп функционалом, ни в коем случае не пишите свой велосипед. Берите vimeo и не усложняйте себе жизнь в 1000 раз.
    Ответ написан
    3 комментария
  • Как удобней развернуть действующий проект на тестировании?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Все что вы задали, это не вопросы по гиту. Это вопросы по SDLC - и на эти вопросы можете ответить только вы.
    Гит это просто инструмент версионирования, а не доставки контента.
    Тем более, что даже неизвестно сайт у вас крутится на виртуалке или на хостинге, и в принципе там git поставить есть возможность или нет.

    Да, гитом тоже можно синхронизировать изменения между разными енвайрнментами, но вот те вопросы которые вы задаете - вы сами должны придумать удобный пайплайн и выбрать инструменты (git, scp, rsync, какой-нить CI/CD инструмент или что угодно)
    Ответ написан
    Комментировать
  • Как сделать чтобы input и label работали без id и for?

    0xD34F
    @0xD34F
    Пробовал input в label положить вообще не помогает

    помогает
    Ответ написан
    Комментировать
  • Какой браузер меньше ест памяти и CPU?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    celeron 2
    Современное видео уже больше 10-ти лет декодится хардварным кодеком встроенным в CPU, поэтому если у вас celeron2, он такое не поддерживает и тупо не справится. Забудьте про видео,на celeron2 можно смотреть Mpeg2, в лучшем случае mpeg4 с низким битрейтом, если это какой-нить xvid, а про современные кодеки на котором живет сейчас весь мир просто забудь.
    Ответ написан
    Комментировать
  • Периодически падает север (amazon), в чём может быть причина?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    В чём вопрос? Нужно диагностировать, почему падает сервер.

    Раз всё настолько плохо, что даже SSH отваливается - дело не в нгинксе и не в РНР.
    Ответ написан
    Комментировать
  • Конструкция if или switch?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Второй вариант это хорошая попытка, но недостаточно полно реализованная. Писать надо хотя бы так

    (function() { 
        foreach([true] as $condition) {
            $condition = ($condition) ? true : false; 
            while ($condition) {
                switch (true) {
                    case ($this->inComplete(($oldStatus), ($newStatus))):
                    case ($this->outComplete(($oldStatus), ($newStatus))):
                        ($this->action());
                        ($this->save());
                }
                break;
            }
        }
    })();

    В общем, перед тем как задавать вопрос на тостере, надо сесть и хорошенько сначала самому подумать, каких бессмысленных операторов можно добавить в код, кроме switch.
    Ответ написан
    3 комментария
  • Какой процесор будет лучше: R5 5600X, i7-10700K или R7 3700X?

    @d-sem
    Живой опыт и ощущения.

    Год назад брал себе домой 3600 / 32gb ram / 500gb nvme. Работаю в Ubuntu. Бекенд разработчик. Иногда балуюсь фронтом в свободное время.

    Считаю, что для задач веб-разработки 3600 за глаза. Ситуации, когда я бы упирался в процессор - очень редки и это были нишевые задачи. Чтобы веб-разработка загрузила современный процессор и уперлась в его производительность это нужно или что-то сделать не так или делать что-то нишевое.

    На прошлых машинах в разработке упирался в память или быстродействие накопителя.

    Отсюда мое личное мнение, что окончательный выбор нужно делать исходя из других задач. Будет много софта оптимизированного под интел - брать интел. Будут задачи на какой нибудь многопоток аля конвертацию видео - брать там где больше ядер. Если игры - вложить в видяхи. Если нет - то лучше вложиться в лучшую материнку, память, охлаждение, корпус, нежели сходить с ума от синтетических тестов.
    Ответ написан
  • В phpstorm можно сделать так, чтоб открытые файлы с разных проектов не открывались все в одном окне, а как то в зависимости от открытого проекта?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    В прямом смысле открывать проекты в разных окнах. Я тулбоксом пользовался и помню что всегда когда из него открываешь проект то он в новом окне полноценно запускался. У меня мак, не знаю играет ли это роль
    Ответ написан
    4 комментария
  • Как вывести в console.log букву P и A звёздочками *?

    console.log('*РА*')
    Ответ написан
    Комментировать
  • Как вывести в console.log букву P и A звёздочками *?

    @MEDIOFF
    Python Developer
    console.log('**')

    P.S: Прошу прощения телепаты сегодня не пришли, поэтому какой вопрос, такое и решение
    Ответ написан
    Комментировать
  • Почему не получается перейти с авторизации по паролю на авторизацию по ключу?

    @cheeroque
    Смените для вашего проекта url ремоута:

    git remote set-url <remote_name> <remote_url>

    Где remote_name – скорее всего, origin.
    Новый remote_url смотрите на битбакете: нажимаете clone в вашем проекте, в заголовке модалки выбираете SSH и копируете получившуюся ссылку.
    Ответ написан
    1 комментарий
  • Как сохранить JSON в MongoDB с сохранением связей?

    Ну или, может, какие-то другие варианты есть?

    Есть. Использовать каждую СУБД по назначению и не пытаться запихнуть реляционные данные в документную БД.

    А вообще, наверное стоит просто для независимых сущностей генерировать новые ObjectId, и протаскивать их во все зависимые сущности вместо соответствующих id. Ну т.е. не нужно пытаться решать задачу в лоб, пытаясь сконвертировать один id в другой, вам нужно сконвертировать СВЯЗЬ, а не id. Чтобы сконвертировать связь, вам не нужен оригинальный id, вам важно соединить с помощью нового ObjectId те же самые сущности, что были соединены в реляционной базе оригинальным id.
    Ответ написан
    1 комментарий