Задать вопрос
  • Является ли порочной практика итеративных попыток сдачи тестировщикам сырых результатов работы?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Это нормальная практика, когда тестировщик итеративно смотрит сырые варианты. В определенных ситуациях это лучше, чем сделать готовый вариант, отладив программистами все баги и понять, что надо то было совсем другое.

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

    И самое главное - все очень сильно зависит от уровня разработчиков в команде. К сожалению, часто в том же бэке не видят дальше своего носа, отсюда и проблемы в духе "купи молоко, если будут яйца, возьми десяток"...
    Ответ написан
    6 комментариев
  • Возможно появились новые удобные способы работы на нескольких местах?

    @nApoBo3
    У вас вероятно очень специфические задачи если производительности ноутбука за "цена вопроса не имеет значения" вас не устраивает.
    Ноут лучшее решение.
    Альтернативы:
    Переносной накопитель. Ниже производительность, нужны современные интерфейсы, ниже надёжность, выше риск утраты включая возможность компрометации информации.
    Любая форма rdp или удаленного ПО. Зависимость от сети.
    Скриптованное окружение. Высокая сложность, издержки поддержки скриптов.

    Ноут лучшее решение, в стационарных условиях к нему подключается внешний монитор или два.
    Ответ написан
    2 комментария
  • В чем проблема с выводом?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Для большей ясности стоило бы приести пример выхлопа команды
    occtl --json show users
    Чтобы отвечающим не приходилось ставить VPN-сервер и подключать тестовых пользователей.
    Сходу видно, что вы запрашиваете результат в формате json, а затем парсите его грепами и awk'ом, что крайне бессмысленно и беспощадно. Почему бы не использовать jq для этой цели, а не пытаться забить шуруп молотком.
    Приведенная вами проблема связана с тем, что, вероятно, выхлоп в виде json происходит без гарантии порядка ключей, а ваш способ доставать из него данные весьма варварский.

    Да и проблемы в таком подходе на этом не ограничатся, ведь список пользователей может измениться между итерациями и даже между получаением имени и ip.
    Следовало бы единоразово получить все сырые данне, а затем вытаскивать из них нужное.
    Ответ написан
    Комментировать
  • Starlink от SpaceX - прощай звездное небо, кошмар астронома?

    @airbor
    Представьте себе 12 000 человек на поверхности всей земли. Ну то есть не 8 миллиардов как сейчас, а всего 12 000. Представляете эту плотность? Можно было бы всю жизнь искать кого-то и не встретить ни одного человека.

    А теперь поднимемся на высоту обриты, где площадь сферы еще больше. Значительно. И плотность еще меньше.

    12 000 - это нисколько. Вероятность врезаться в такой спутник примерно такая же как вероятность попасть в человека брошенным из космоса камушком, если бы на планете было не 8 миллиардов человек, а 12 000.
    Ответ написан
    3 комментария
  • Как быстро и надежно закрывать задачи по сайту не нанимая программиста?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Ну это рынок, всх хотят кушать, фрилансер не будет пол года ждать того что от вас может прилететь, а может и не прилететь, заказ на 40 часов.
    Поэтому весь мир уже давно разделился на "подписчиков" и "проектников".
    Если нужна периодическая работа, то заключаете договор в рамках которого исполнитель резервирует под вас +/- определенное количество времени которое вы можете в течении месяца выбирать, либо, по аналогии с ТК, оплатить работнику простой.
    Если нужна разовая работа, то выкатывайте ТЗ и ждите кто из "проектников" свободный откликнется, чтобы полностью окунуться в вашу задачу.
    ПОэтому анализируйте рынок и считайте что выгоднее: дробить задачи чтобы укладываться в +/- 10ч в месяц и иметь постоянного человека у которого эти 10ч заложены в график и который уже зная архитектуру и состояние вашего проекта быстро все сделает. Или на каждую разовую задачу нанимать нового специалиста и доплачивать каждый раз 5-10ч за "вливание в проект", потому как, да, "проектник" сейчас сидит на аналогичном вашему 40часовике и на следующую неделю уже согласовал другой 40часовик, и Ваш, соответственно сможет взять только в конце месяца, если че выгодней не подвернется.
    Ответ написан
    Комментировать
  • Тестирование больших vue приложений?

    а как тестировать крупные приложения?

    Да точно также.

    Как понять, что именно мне нужно покрыть тестами?

    Этот вопрос решает тест-анализ.
    Как за минимальное количество прогонов узнать как можно больше о состоянии приложения, и чтобы это принесло как можно больше пользы.

    Ведь по логике нужный каждый кусок покрывать, чтобы быть на 100% уверенным в этом коде?

    Да, но полное покрытие - это очень дорого, и часто не оправдано.

    По тому, если приоложение большое, а тестов нет:
    1. Покрываем самое критичное и важное, без чего просто жить нельзя, если оно поломается.
    2. Покрывает то, где много изменений происходит, и есть шанс случайно поломать.
    3. Покрываем всё новое, как часть реализации фичи.
    4. Юнит тестами ещё есть смысл покрыть всякие общие компоненты, которые используются тупо везде.

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

    А vue тут ни при чём.
    Ответ написан
    3 комментария
  • Какие лучшие proxy сервера c ipv4 для соединения с Японией?

    Скорость света в вакууме 300,000 км/с, расстояние до Японии от Москвы по поверхности земли примерно 7500 км или 15000 км туда и обратно, что дает 50мс задержки. С учетом коэффициента преломления оптоволокна (порядка 1,5) - 75мс. Можно немного сократить, если пробурить канал напрямую вглубь земли и передавать световым пучком в вакууме без оптоволокна.

    Но вместе с пингом 40мс вы все равно получите Нобелевскую премию по физике.

    На самом деле каналов по прямой до Японии нет, данные идут достаточно сложным маршрутом и не в вакууме и 300мс это более-менее ожидаемый результат. Типичный маршрут для российских провайдеров - Европа - Северная Африка/Средний восток - Юго-восточная Азия - Япония. Можно поискать провайдера у которого есть пиринг с азиатскими IX минуя Европу, чтобы маршрут был "прямее", вы можете получить задержки. скажем, вдвое меньше. Прокси может быть найти сложнее, т.к. надо чтобы был прямой трафик до прокси и от прокси. Имеет смысл посмотреть в точки где может быть пиринг с европейской Россией и Азией, например наш дальний восток или Казахстан. Прокси в Японии скорей всего никакого преимущества не даст, нужен прокси где-то, куда есть более-менее прямой канал от вашего провайдера и откуда есть прямой канал на пиринги в Азии.
    Если хотите маленький пинг - вам надо клиентский софт располагать в Японии (возможно вместе с сотрудником), а не прокси-сервер. Для высокочастотного трейдинга его располагают не просто в той же стране, где биржа, но и как можно ближе у того же провайдера или на самой бирже.
    Ответ написан
    1 комментарий
  • Логирование веб-приложений: syslog и stdout/stderr?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    1. стандартная служба syslog умеет парсить логи по facility, следовательно можно настроить логирование разных компонентов в разные файлы на уровне syslog, управлять их ротацией.
    Также syslog умеет работать с другими syslog, таким образом можно аггрегировать логи с разных машин и управлять ими централизованно.

    2. логи отправленные в stdout обычно куда-то перенаправляют, в тот же файл, или сразу грабят в какой-то аггрегатор.
    В современное время про stdout чаще всего говорят, когда вы запускаете что-то в контейнере, а контейнер крутится в оркестраторе типа kubernetes/openshift.
    В этом случае настраивается внешний сборщик - тот же filebeat, fluentd, logstash или syslog, который собирает логи со всего кластера кубернетес/опенщифт, парсит их и кидает в аггрегатор.
    Просто задеплоили новый компонент и по его имени можно фильтровать логи в той же Кибане, при этом нигде не нужно в системе логирования настраивать что-то под новый компонент, все тегируется автоматом.
    Ответ написан
    Комментировать
  • Терминология: почему контейнеры называют микросервисами?

    Griboks
    @Griboks
    Микросервис - это элемент архитектуры.
    Контейнер - это его реализация.
    В 90% случаев микросервис реализуется через контейнер, а контейнер в 80% случаев реализует микросервис. Поэтому в народе эти понятия слились (как статистика и статистические данные).
    Ответ написан
    Комментировать
  • Почему mysql сервер может подтреблять столько ресурсов?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    Посмотри show full processlist \G
    Включи slow_log и посмотри, какие запросы следует оптимизировать.
    Ответ написан
    Комментировать
  • Как работают PHP-потоки (stream)? почему они не загружаются полностью в память?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Эту инфу нужно искать в отрыве от языка, это уровень операционной системы.
    Один из ответов на SO:
    What is Under the Hood in a Stream in Programming?
    Upd. Еще есть пересекающаяся тема как http streaming,
    я когда-то для себя шпаргалку писала (ссылка)
    Ответ написан
    1 комментарий
  • Как в докер контейнере mysql записывать медленные запросы в папке проекта?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Перед запуском докера создайте пустой файл и дайте полные права (конечно slow.log а не slow.cfg)
    touch ./resources/docker/logs/slow.log
    chown 777 ./resources/docker/logs/slow.log


    - "./resources/docker/logs/slow.log:/var/log/mysql/mysql-slow.log"


    А лучше пробросьте в контейнер всю папку logs

    volumes:
          - "./resources/docker/config/my.cfg:/etc/mysql/conf.d/config-file.cnf"
          - "./resources/docker/logs/mysql/:/var/log/mysql/"
          - "./resources/schema/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql"
    Ответ написан
    Комментировать
  • Docker и php-fpm: почему рекомендуют не пробрасывать ip?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Самое главное не высунуть php-fpm порт наружу в интернет что бы никто не запустит на нем какой-нибудь зловред.

    Если же порт торчит из докера и прикрыт с наружи файр-волом то занчит вы знаете что делаете и принимаете на себя управление рисками you know exactly what you are doing (and are willing to accept the extreme risk)

    Ели же у Вас из докера в интернет торчит неважно кто рнр, база данных или еще какой-нибудь сервис - повертье желающих его взломать достаточно
    Ответ написан
    Комментировать
  • Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень хороший вопрос!

    Для длинных условий можно и нужно использовать такую замечательную практику, как именованные условия!
    В большинстве случаев, когда условия не зависят друг от друга, можно просто присвоить результат вычисления условия переменной с обязательно говорящим именем, и дальше уже использовать эти переменные:

    $dateIsValid = $obj->getDate() >= getCurrentDate();
    $balanceOk = $obj->getBalance() > 0;
    // Любые другие условия
    if ($dateIsValid && $balanceOK) ...


    Это повышает читабельность не только сокращая само тело условного оператора, но в первую очередь превращая его в связный текст!

    Если же условия зависят друг от друга, то можно оформлять их в виде функций (методов). И тогда они не будут выполнены, если до них не дойдет очередь.
    Ответ написан
  • Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    It depends.
    Абстрактных решений тут не будет, всё зависит от того, что это именно за условия.
    Из стандартных методов - упрощение логических выражений, вынесение условий в функции, замена проверок вида x == 1 || x == 2 || ... || x == n на [1, 2, ..., n].includes(x) и т.п.
    Ответ написан
    Комментировать
  • Какие есть варианты повышения для вебмастера?

    Tomio
    @Tomio
    backend developer (python, php)
    Когда-то очень давно я был в такой же ситуации, как и вы. Просто упёрся в потолок. И тут дело даже не в зп, мне могли ее повысить. Дело в пуле задач, которые я решал. Он был ограничен веб-мастерингом, очень разрозненным (сео, формошлёпство, вёрстка, контент).
    В итоге, как бы комфортно мне ни было, я решил, что нужно двигаться дальше. Сменил работу, стал чисто бэкендером. В итоге хорошо прокачал PHP, MySQL, освоил Git. Потом снова сменил работу, освоил на ней Symfony, Clickhouse, Kubernetes. А потом вообще сменил язык и сейчас активно работаю на Python с очень крутым стэком. Соответственно, зп моя очень сильно выросла, так как знаний и опыта стало больше и цениться на рынке я стал выше. А главное, я кайфую сейчас от того, чем занимаюсь)
    Не бойтесь, вырывайтесь из этого болота, пока не поздно. Думайте наперёд.
    Ответ написан
    Комментировать
  • Почему не срабатывает команда "mkdir 1 | mkdir 1/2"?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    Создать директорию с именем 1 и в случае успеха выполнить ещё одну команду которая создаст поддиректорию 2 в директории 1:
    mkdir 1 && mkdir 1/2

    А это mkdir 1 | mkdir 1/2 не логический оператор, а pipe - труба для направления вывода в другое приложение.
    Ответ написан
    5 комментариев
  • Можно ли в бесплатном периоде AWS переустановить OS?

    Не слетит, он на машиночасы распространяется, а не на конкретные машины.
    Ответ написан
    Комментировать
  • Как на постфиксе создать ящик no-reply@domainname?

    @mezhuev
    Системный администратор
    По всей видимости почтовый клиент пытается проверить корректность настройки путём отправки самому себе письма. Но так как у вас стоит reject, то подобная проверка заведомо завершается ошибкой (код ответа 5xx). У вас есть несколько вариантов (сверху вниз от простого к сложному, снизу вверх от более правильного к менее правильному):
    1. Игнорировать ошибку. Если остальные параметры верные, то отправка писем будет работать корректно.
    2. Вместо reject использовать discard. Из минусов реальные отправители не получат отчёт DSN о невозможности доставки.
    3. Более гибко настроить ограничения, разрешив no-reply@domainname отправлять письма самому себе. Можно реализовать создав собственные ограничения через smtpd_restriction_classes.
    4. Удалить данный ящик и вместо него использовать синоним, прописав в почтовом клиенте пользователя дополнительный профиль с необходимым адресом и именем отправителя. А чтобы все подряд не слали почту от данного имени настроить smtpd_sender_login_maps.
    5. Вообще не делать рассылку руками, а использовать соответствующий сервис.
    Ответ написан
    2 комментария