• Как откатить коммиты в git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Откатиться на три коммита назад:
    git reset --hard HEAD~3

    А вообще не стоит вслепую повторять команды. Лучше прочитать документацию и работать осмысленно.
    Ответ написан
    5 комментариев
  • Как битые jpg заменить годным файлом?

    karabanov
    @karabanov
    Системный администратор
    find /path/to/bad/files/dir -iname "*.jpg" -exec cp -v /path/to/good.jpg {} \;
    Ответ написан
    6 комментариев
  • Какой стек технологий лучше всего подойдет для работы с объемными базами данных?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу?

    Для начала немного контекста - 2 важных примечания:
    1) Описанная задача решается на любом упомянутом стеке, + еще десяток возможных вариантов (Java/Spring, питон, нода, дотнет, голанг и т.д.).
    2) Быстродействие системы зависит от ее самой медленной части, и в 95% случаев самая медленная часть - БД, просто в силу специфики работы: много данных со сложными связями, выборки с сортировкой и фильтрацией из большого массива и вот это все, в то время как язык бэкенда в основном выполняет достаточно простые манипуляции с уже готовыми наборами данных (за редчайшими исключениями, которых в вашем кейсе нет, или они не описаны в вопросе).

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

    Насчет стоимости и условий:
    полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется.
    полный самопис - либо маркетинг, либо идиотизм, писать на голом языке не будет ни одна нормальная студия, в принципе в данном случае либо используется фреймворк и заказчику преподносится как "сделано вручную программистами девственниками под светом серебряной луны", либо разработчики идиоты, мнящие себя круче всех (нет). В первом случае это то же что и "сайт на Laravel +MySQL" (норма и стандарт для среднего уровня студий), во втором - развод на мани на пустом месте и попытка продать г**но в обертке "иксклюзивнасти".

    По цене - на сегодняшний день, если я не ошибаюсь, 150к деревянных это +- 1000уе. Цена приемлемая за нормальную работу, если найдете дешевле "на Laravel" - думаю будет вообще ок. Опять же, цены штука такая, кто-то за копейки сделает хорошо, кто-то за дорого каку сляпает. Влияет так же регион, понятно что в Мск цена будет серьезно больше чем в условном Челябинске...

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

    UPD:
    проект планируется на 100 к+ посетителей в месяц...
    предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки,
    ок, пусть будет 200к для наглядности.
    В среднем, если это маркетплейс, то постоянных посетителей будет не много, думаю около 10%, так что ими можно пренебречь. Условно - 200к / 30 дней = 6600 в сутки, при активных 10-12 часах посещения это ~600 в час. Пусть на 1 посетителя будет 5 запросов страниц, это 600*5=3000 в час = 50 в минуту или менее 1 запроса в секунду.
    Даже если умножить это на 30 (допустим такая пиковая нагрузка), 30rps вообще "ниачем". Не знаю кто там вам считал то это проблема, любое современное железо среднего уровня вытягивает без напряга.
    Ответ написан
    2 комментария
  • Какая альтернатива есть у Jira и BitBucket?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    gitlab redmine

    и да лучше разверните на своих серверах
    Ответ написан
    Комментировать
  • Как скачивать большие файлы по ссылке php?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Делать такие вещи нужно не через окно браузера, а через очереди. У браузера есть максимальное ожидаемое время ответа после чего соединение прервется. Да и заставлять ждать клиента пока ваш сервер загрузит глупо.
    Делается это так:
    Браузер отправляет запрос "Скачай файл по этой ссылке"
    Скрипт кладет эту задачу в очередь и отвечает браузеру "ок"
    Другой скрипт получает эту задачу и начинает скачивание, удаляет задание из очереди и пишет куда-то (в бд, например), что все ок, скачано
    Браузер (можно после обновления страницы) отображает "Файл скачан"
    Ответ написан
    6 комментариев
  • Как сделать интернет для компьютерного клуба?

    katelin1106
    @katelin1106
    Сетевой инженер MikroTik
    Сеть в клубах клиентам настраиваю часто.

    Для Вашего случая вполне подойдёт любой неуправляемый коммутатор TP-Link на 16 портов (если не потребуется ещё, скажем, видеонаблюдение делать), а в качестве роутера - hEX либо hAP ac2. На скоростях до 100 Мбит/с выдержит большое количество очередей (о них позже).
    Сами эти роутеры вывозят реальную скорость до гигабита, но не в случае очередей трафика.
    Если скорость уже 200-300 Мбит/с, то лучше выбирать RB4011, он помощнее.

    Предложенный в комментах RB5009 на мой взгляд бессмысленное приобретение для 12 компов. Из пушки да по одному воробью.

    Теперь про очереди. В онлайн-играх важно, чтобы игровой трафик получал приоритет. При игре по локальной сети обычно никаких проблем не бывает, но при игре с игроком за пределами клуба можем столкнуться с проблемой потерь пакетов в случае загруженного канала. Решаю обычно следующим образом - выделяем несколько типов трафика:
    1. Игровой - в него входит собственно игровой трафик, голосовой трафик, и icmp запрос-ответ (в народе - пинг). Обычно не более 2-3 Мбит/с в сумме.
    2. Трафик обновления игр (когда при запуске клиент хочет обновиться).
    3. Всё остальное, что не вошло в два предыдущие - веб-серфинг, обновление Windows, прочее.
    4. Трафик от гостевого Wi-Fi.

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

    Получается два дерева очередей - на загрузку и на выгрузку.

    Ещё пара слов про коммутаторы. В данном случае не вижу смысла брать ни CRS326, ни CSS326, они оба избыточны в данном кейсе. Если же есть желание получать подробную информацию о трафике на каждом порту, то, конечно, предпочтение за CRS326. Если такого желания нет, то достаточно тупого 16-портового надёжного коммутатора.
    Ответ написан
    1 комментарий
  • Какую информацию про неизвестный угол надо добавлять, чтобы его можно было точно определить?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что площадь равна половине произведения длин этих сторон на синус угла между ними, а угол может быть острым или тупым с одним и тем же значением синуса. Например, если стороны равны 1 и площать 1/4, то уголь может быть 30 градусов или 150 градусов.
    Ответ написан
    Комментировать
  • Как настроить postgresql для стабильной работы?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Судя по вашему куцому объяснению - проблема скорее всего в приложении, а не в базе. Хотя на настройки постгреса я бы тоже обратил внимание. Без логов разговаривать предметно не о чем.
    Ответ написан
    Комментировать
  • Type 'string' is not assignable to type '"" | "success" | "warning" | "error"'?

    const [alertvariant, setAlertvariant] = useState<AlertProps["variant"]>("success");
    Ответ написан
    Комментировать
  • Как сделать запрос с GraphQL?

    Проще всего будет использовать готовую библиотеку:
    https://www.npmjs.com/package/@apollo/client

    А почитать можно тут: https://graphql.org/
    Ответ написан
    Комментировать
  • Что делать если сайт поддерживался украинским разработчиком и хостился на украинском хостинге?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    По-хорошему нужно связываться с разработчиком и просить передать логины-пароли.

    И на будущее всегда иметь у себя все данные для доступа, равно как и оформлять все хостинги на свое собственное имя, а не на разработчика. То есть даже если не хотите вникать в вопросы поддержки, юридически все должно быть оформлено на Вас, админские логины и пароли у Вас должны быть. И вопрос тут не только в Украине, недобросовестные разработчики случаются в любой стране.

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    Никакую.
    Формула не может изменить другую ячейку. Формула не может именно изменить себя - только посчитать новое значение.
    Это делается либо формулой в отдельном столбце с последующей заменой исходного столбца на рассчитанные значения, либо процедурой на VBA.
    Ответ написан
    1 комментарий
  • Как определить по таблице истинности и схеме, какие логические функции присутствуют?

    И как исходя из таблицы истинности писать уравнение?

    Ну просто пишешь уравнение, пока все условия не пройдут.
    Можно тупо каждую строку таблицы превратить в подвыражение.
    Вот пример, который я только что придумал:
    A B C R
    1 1 1 0
    1 1 0 0
    1 0 1 1
    1 0 0 1
    0 1 1 1
    0 1 0 0
    0 0 1 1
    0 0 0 1

    Это всё в итоге превращается в примерно такое уравнение (берём все сочетания, которые в результате дают истину)
    R = (A & !B & C) | (A & !B & !C) | (!A & B & C) | (!A & !B & C) | (!A & !B & !C)

    Остаётся упростить:
    R = A & !B | !A & ((B & C) | !B )
    Ответ написан
    2 комментария
  • В чем разница git commit и git commit -a?

    karabanov
    @karabanov
    Системный администратор
    -a
    --all
    Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.

    В коммит автоматически добавятся изменённые файлы - не надо предварительно выполнять git add <file>
    Ответ написан
    Комментировать
  • Почему живучий режим аккумулятора это 60%?

    @Zolg
    Потому что литиевые аккумуляторы меньше деградируют при зарядке не до конца
    Ответ написан
    Комментировать
  • Почему возникает java.lang.IllegalMonitorStateException при построении паттерна посредник?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Потому что вы вызываете метод .notify() из Object, а не из Mediator
    вот тут:
    public void onPress(){
            mediator.notify();
        }


    у вас метод вот такой: void notify(Components components);
    Ответ написан
    Комментировать
  • Какой пароль вводить при подключении к localhost по ssh?

    vesper-bot
    @vesper-bot
    Любитель файрволлов
    Поставьте пароль на user и вводите его. По умолчанию (типа безопасность) вход с пустым паролем в ssh не допускается.
    Ответ написан
    Комментировать
  • Как установить win 10/11 на програмный рейд 5?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    При запуске установщика Windows, нажать Shift+F10, получить консоль и через diskpart сделать программный RAID-5.
    Ответ написан
    3 комментария