• Как уменьшить Wal в postgresql?

    Melkij
    @Melkij
    PostgreSQL DBA
    Не уж то postgres нужно так много журналов хранить?

    А то что перенесено куда-либо через archive_command самому postgresql вообще не нужно и база об этих файлах никак не беспокоится. Это нужно тому, кто это настраивает. И в ведении как раз этого человека и будет вопрос "сколько валов нужно хранить".
    Если тот кто настраивал archive_command тоже не беспокоится об архиве - то архив будет бесконечен (16 EiB, это не шутка).

    Архив wal нужен для pitr (или file-shipment replication). Для pitr нужны абсолютно все wal без исключения с момента снятия basebackup до требуемой точки восстановления (при том точка восстановления не может быть ранее времени окончания взятого за основу basebackup). В каких временных рамках вам нужен pitr - выбираете соответственно при определении собственной же политики требований к бекапам.
    (10гб места под бекапы звучит откровенно поразительно, если у вас настолько маленькая база - то зачем вам 80гб основной диск? И 8 было бы много)
    Ответ написан
    6 комментариев
  • Zoom - как это устроено? Сложно ли сделать мини-аналог?

    @q2digger
    никого не трогаю, починяю примус
    Поднимите свой сервер Jitsi Meet. В докере разворачивается легко, работает неплохо (с записью видео были сложности когда я его последний раз ковырял, но разрабы там чтото фиксили.. )
    Ответ написан
    Комментировать
  • Как загрузить скрипты мимо google page speed?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Если карта в области видимости - никак. Если карта вне экрана - повесьте евент на интерсекшн обсервер, и загружайте по нему.
    Ответ написан
    Комментировать
  • Как сделать один идентификатор на 2 таблицы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Идея дурацкая, если честно, но сделать можно:

    create sequence shared_sequence;
    create table production_data(id bigint default nextval('shared_sequence'), value text);
    create table demo_data(id bigint default nextval('shared_sequence'), value text);
    Ответ написан
    5 комментариев
  • Как сделать один идентификатор на 2 таблицы?

    @Akela_wolf
    Extreme Programmer
    В Postgresql нет автоинкремента, в postgresql есть последовательности (sequence).
    Собственно берите значение (nextval) из одного и того же сиквенса при вставке записи в обе таблицы - получите то что вам нужно.
    Ответ написан
    Комментировать
  • Как минифицировать JavaScript на Windows без NodeJS?

    Lynn
    @Lynn
    nginx, js, css
    Взять какой-нибудь esbuild или swc. Это простые статичные бинарники.
    Ответ написан
    4 комментария
  • Какой стул для работы лучше?

    profesor08
    @profesor08
    1. Это важно! Плоская и мягкая, но с плотным поролоном сидушка. Она дольше не помнется и в жопу ничего врезаться не будет. Можно подогнуть ногу и тоже ничего не врежется. Если по бокам есть некие приподнятости, то они не мешают.
    2. Спинка ровная и высокая, захочется откинуться, сможешь нормально откинуться. Если есть небольшая подушка под голову, это тоже хорошо и удобно. Если по бокам есть выступы, то они не на что не влияют, кроме фиксации, мне удобно, можно бочком сесть.
    3. Подлокотники мягкие или жесткие не важно, мне жесткие дискомфорта не доставляют. Зато важно чтоб их можно было отрегулировать по высоте. Это киллер фича при прочих равных. Если крутятся в бок тоже хорошо, но это не что-то мега важное, и без этого нормально.
    4. Обивка. Если кожа или заменитель, то жопа и спина будут постоянно мокрыми, особенно летом. Если обивка тканевая, то потеешь гораздо меньше, но, хотя бы раз в год, надо будет нести в химчистку или самому хорошенько драить.
    5. Вес, чем кресло тяжелее, тем надежнее, прочнее, ничего не разболтается.
    6. Газлифт. Бери тот, который для веса большего чем твой, дольше прослужит, хотя они стандартизированные и можно заменить.
    7. Механизм качания. Для меня это ненужная вещь, а порой даже вредная. Стоит на мгновение забыть и резко откинуться на спинку, так сразу ловишь прикол эффекта падения. Поэтому вырубаю.
    8. Колесики. Ну тут ничего лучше не придумали для массового сегмента, так что, иногда пятка может оказаться сбитой.

    P.S. Все это стоит денег, но если раньше вместо кресла бы стул, то кайфанешь от любого. А если было кресло, но хочется что-то получше, то вон мой список субъективных критериев. Ведь вещь ты покупаешь для себя, и пользоваться ей будешь постоянно.
    Ответ написан
    Комментировать
  • Как настроить разделение ролей (user, moder, admin) внутри проекта на React?

    @slide13
    frontend/web-developer
    Для начала, обязательно проверка ролей должна быть реализована на бэке, чтобы юзер не смог минуя ui выполнять не предназначенные для него действия или получать закрытые для него данные.

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

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

    Например, я решал такую задачу следующим способом:
    1. Создал объект правил доступа для различных компонентов/страниц.
    const rules = {
      articles: {
        create: 'articles:create',
        edit: 'articles:edit'
      }
    }

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

    2. Затем создал объект с уровнями доступа и доступными им правилами, для каждой роли это просто Set в который загоняются доступные действия из правил.

    3. Ну и функция, которая на вход принимает правило и по текущей роли пользователя ищет в Set коллекции это самое правило, нашли - значит доступно, вернули true

    Далее в нужном компоненте дергаем нашу функцию проверки прав, передавая туда правило для проверки доступа. Например, у нас просто обычный юзер залогинился, а не редактор.
    Вызываем checkPermission(rules.articles.edit), если функа вернула false, то блокируем или скрываем кнопку редактирования статьи, ну и т.д.

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

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

    0xD34F
    @0xD34F Куратор тега React
    Дичь какая-то - зачем вам хранить количество минут и часов? Достаточно секунд (да, их будет не 0-59, а сколько угодно), минуты и часы вычисляются, если нужны.

    сбрасывается на 0 и начинает отсчет с предыдущего состояния

    Что неудивительно - метод run работает с "несброшенными" данными. Чтобы иметь доступ к актуальному состоянию, используйте функциональное обновление.
    Ответ написан
    Комментировать
  • Какую альтернативу Prettier можно посоветовать, чтобы решить проблему длинных и коротких строк?

    search
    @search
    мама говорит что я особенный
    Вот тут обсуждают как это преодалеть, но методы черезжопные: https://github.com/prettier/prettier-vscode/issues/352

    Единственная альтернатива преттиеру - это eslint, но это так себе альтернатива, если честно.

    На вашем месте я бы внедрил преттиер и доверился ему. Его используют проекты на тысячи контрибьютеров (тот же реакт и ангулар) и особо не жалуются. Да, в нём есть недостатки, и не всем нравится формат. Но единообразный формат кода и отсутсвие споров на тему что лучше, перевешивают любые его минусы. Не использовать преттиер потому что он сворачивает короткие массивы и в гит блейме сразу не видно кто добавил элемент в массив - это как не пользоваться ножом потому что можно порезаться.
    Ответ написан
    4 комментария
  • Откуда и зачем в Create React App конвертация hsl в rgb?

    Machinez
    @Machinez
    делает это не CRA или реакт, а браузер, в примере на codepen у тебя используется древняя версия реакта, от того и результаты разные.
    попробуй
    document.body.style.color = 'hsl(10, 10%, 10%)';
    если честно, не вижу в этом никакой проблемы, ты ведь внутри реакта работаешь с hsl значением, так какая разница во что он там конвертирует на выходе.
    проблема может возникнуть если только ты будешь читать атрибут напрямую у DOM элемента, и тебе нужен будет hsl, но в таком случае ты что-то делаешь неправильно.
    Ответ написан
    9 комментариев
  • Как убедиться, что ретвит был выполнен?

    deepblack
    @deepblack
    1. Воспользоваться документацией Twitter API

    Есть метод GET statuses/retweets/:id
    Отдает 100 последних ретвитов (вам подойдет если ретвитов не более 100) твита с указанным id.

    2. Посмотреть в профиле пользователя последний твит (можно и через API)
    Ответ написан
    Комментировать
  • Как избавиться от "такого" кода?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Бот «сломается» при большом числе запросов. Прежде, чем отдать ожидаемое «ok», он выполняет ещё два веб-запроса: users.get() и messages.send()– это съедает время и память. Будье готовы переключиться на схему с очередью и отдельными рабочими. Приняли запрос, сохранили, отдали "ok". Другой процесс, рабочий, неспеша разбирает задачи из очереди, отправляет ответы. Стали популярнее, добавили рабочих с других серверов.

    Не проверяете user text на минимальную длину. Пришлют одну букву - получат весь FAQ. По мере роста FAQ'а, можете столкнуться с дубликацией: на запрос "hi" найдётся, скажем, ключ с "high load".
    Ответ написан
    1 комментарий
  • Как спарсить сайт node js?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    Подключиться к вебсокету и собирать данные, для этого нужен любой websocket клиент и немного поковырять сайт чтобы понять какие запросы отправлять.

    Никакие браузеры не нужны для этого как пишут.
    Ответ написан
    1 комментарий
  • Как передать нужное свойство объекта из одного массива в объект другого массива?

    freislot
    @freislot
    Frontend-разработчик
    const arrOne = [
      { group: "Dog", key: "bad", value: "7" },
      { group: "Cat", key: "dear", value: "13" },
      { group: "Cat", key: "good", value: "20" },
    ];
    
    const arrTwo = [
      { group: "Dog", key: "bad", value: "265" },
      { group: "Cat", key: "dear", value: "529" },
      { group: "Cat", key: "good", value: "956" },
    ]
    let arrThree = [];
    
    arrOne.forEach((itm, i) => {
      arrThree.push(Object.assign({}, itm, arrTwo[i]));
    });
    
    console.log(arrThree);


    только два одинаковых ключа value не может быть) у вас пример некорректный)
    Ответ написан
    1 комментарий
  • С чего начать изучение webgl, чтобы сделать так?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Вся суть таких анимаций - много заранее заготовленных кадров, которые мы по очереди показываем. Чем больше кадров - тем плавнее анимация. Они могут быть в отдельных картинках или по много кадров в одной. На вашем сайте все это еще поделили - каждая часть бутылочки имеет свою последовательность кадров:
    Спойлер
    1ersu-v8gwpy6mxqyagwggfny0k.png

    Каких-то конкретных преимуществ этого подхода по сравнению с одним кадром на все я не вижу. Использовать ли для этого WebGL? Ну можно. Точно также, как и обычный canvas. Как выводить картинки на него вы легко загуглите, остается только посчитать координаты расположения кадров в картинке (по идее дизайнер должен их там аккуратно по сеточке расставлять) и выводить их по очереди.

    P.S.: По идее можно отрендерить видео и вместо ручного переключения кадров проматывать его в разные стороны с разной скоростью в зависимости от скролла. Но на практике что-то не видно, чтобы это массово делали, обычно используют именно отдельные кадры.
    Ответ написан
    1 комментарий
  • Правильно ли названы классы по БЭМ?

    Skrase
    @Skrase
    Веб-разработчик, веб-дизайнер
    Привет. Я не супер эксперт, но на сколько я знаю нет...
    Для примера возьму твой верхний кусок кода
    <section class="testimonials">
            <div class="container">
                <div class="testimonials__wrapper">
                    <div class="testimonials__wrapper_item">
                        <div class="testimonials__wrapper_item_img">
                            <img src="img/photo/testimonial.png" alt="Q">
                        </div>
                        <div class="testimonials__wrapper_item_text">
                            <p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.”</p>
                            <h4>Joe Doe</h4>
                        </div>
                    </div>

    я бы сделал так:
    <section class="testimonials">
            <div class="container">
                <div class="testimonials__wrapper">
                    <div class="testimonials-item">
                        <div class="testimonials-item__img">
                            <img src="img/photo/testimonial.png" alt="Q">
                        </div>
                        <div class="testimonials-item__text">
                            <p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.”</p>
                            <h4>Joe Doe</h4>
                        </div>
                    </div>

    Но учти, что у меня сейчас почти 3 часа ночи, и за меня говорит мой кофе)
    Ответ написан
    1 комментарий
  • Как лучше делать форму обратной связи php или js?

    cyril_sadovnik
    @cyril_sadovnik
    жму по кнопкам компьютера с серьёзным лицом
    "Никакого back-end для форм!"

    Я думаю, что обойтись без back-end'а можно следующими способами:
    1) Перенаправить пользователя на mailto (пример)
    2) Делегировать отправку уведомления какому-нибудь сервису (например)
    Ответ написан
    1 комментарий