• Нормально ли иметь много React компонентов в небольшом проекте?

    joeberetta
    @joeberetta
    Читай: https://epdf.pub/google-for-dummies.html
    Нет верного ответа, как и вопрос крайне относительный. У каждого разное понимание "маленького" проекта. Также не стоит забывать, что реакт - библиотека с компонентным подходом. К примеру возьмем главную страницу Гугла. Там могли бы быть такие "большие" компоненты как "шапка" и "main" которые в свою очередь состоят из множества других компонентов, как: кнопка/поле/форма/ссылка и все это можно сколько угодно разбивать на более мелкие компоненты, пока не достигнете уровня компонент == тег(html).
    В таком случае вопрос уже в том, насколько это целесообразно в рамках конкретного проекта. Насколько они должны быть мелкими зависит от того, насколько реюзабельными они должны быть

    З.ы. прошу прощения, если вода/тавтология
    Ответ написан
    Комментировать
  • Есть ли рекомендации по названиям миграций БД?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Да без разницы, если честно. Она запустится единожды и дальше про нее можно забыть навсегда.

    Конфликты маловероятны, ни разу не стыкался.

    AddTargetTypeColumnToOptionsTable
    AddSomeSetOfFieldsToSomeTable
    MakeOptionFieldsNullable
    CreateSomeTable
    RenameSomeFieldInSomeTable
    RenamePackageTables

    Главное, что бы вам было удобно ее искать до того, как она закомичена. Остальное значения не имеет.
    Ответ написан
    Комментировать
  • Какова примерная стоимость создания расширения для Twitch?

    Zoominger
    @Zoominger
    System Integrator
    1. Заходите на фриланс, выставляете цену 10 000 рублей;
    2. Через минуту приходит Васян и предлагает 8 000;
    3. Через пять минут приходит Колян и предлагает 5 000;
    Можно подождать час и придёт вайтишник, который сделает за еду.

    Шутки шутками, но совет дельный.
    Ответ написан
    Комментировать
  • Как правильно сделать api клиент на React?

    @artem_music
    Сделайте функцию-хэлпер или декоратор на компоненты, где будет вызов fetch и другие повторяющиеся куски.

    я же не могу писать для каждого запроса


    Почему не можете? Просто следуйте принципам DRY - увидели что везде пишите одно и тоже - выносите в модули/итераторы/etc
    Ответ написан
    3 комментария
  • Как в Vue правильно отобразить дату и время?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    Вот как это делать согласно лучших практик:
    <template>
    <div>
        <!-- В шаблоне не вызывают какие-либо функций. Только выводят готовые значения -->
        {{localeDate}}
    </div>
    </template>
    
    <script>
    {
        data: () => ({
            // Дата хранится в виде числа. Не обязательно в state компонента. Но и в других местах тоже
            date: 1580558031264,
        }),
        
        computed: {
            localeDate() {
                // Конвертируем число в строку. Для этого существуют специальные методы
                // toLocaleDateString() или toLocaleString() или toLocaleTimeString()
                // Итоговая строка будет зависеть от локализации системы пользователя. 
                // Для русской локали это будет "01.02.2020", 
                // для американской "2/1/2020", 
                // для немецкой — "1.2.2020"
                // Вы НЕ должны устанавливать формат даты самостоятельно
                return (new Date(this.date)).toLocaleDateString() 
            },
        },
    
        // Если нужно изменять дату в реальном времени вешаем таймер
        created() {
            this.intervalId = setInterval(() => this.date = Date.now(), 1000); // Обновляем значения не чаще раза в секунду. А то и реже.
        },
    
        // Если повесили таймер, то его нужно отключать
        beforeDestroy() {
            if (this.intervalId) clearInterval(this.intervalId)
        },
    }
    </script>
    Ответ написан
    2 комментария
  • Как можно добиться разнообразия рандомности в PHP?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Рандомность нельзя разнообразить, т.к. в ней каждое следующее выпадающее число
    никак не зависит от того, что выпадало ранее.

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

    Можно сымитировать такое поведение. Проще всего жёстко запретить ближе, чем, допустим, 40 от предыдущего.
    Значит, из отрезка значений выпадает отрезок длиной 40 + 1 + 40 = 81
    Первый вызов вернёт честно-случайное mt_rand(322, 595)
    А следующий только mt_rand(322, 514)
    И надо будет его скорректировать, в зависимости от предыдущего. Грубо, так:
    $a = 322;
    $b = 595;
    $m = 40;
    
    // первый раунд
    $rnd = mt_rand($a, $b);
    $prev = $rnd;
    // ... что-то происходит
    
    // второй и последующие раунды
    $rnd = mt_rand($a, $b - 2 * $m - 1);
    if ($rnd > $prev - $m) $rnd += 2 * $m + 1;
    if ($rnd > $b) $rnd -= ($b - $a);
    $prev = $rnd;
    // ...
    Ответ написан
    5 комментариев
  • Какой тип баз данных самый быстрый?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Какой транспорт самый быстрый? Болид F1? А если с десятью тоннами груза? А если на пересечённой местности? А если на воде? Уловили посыл? Скорость тех или иных видов СУБД зависит от условий эксплуатации. В одних условиях быстрее будет одно, в других другое.
    Ответ написан
    Комментировать
  • Какие существуют методики и инструменты для масштабируемости проекта?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Словом нужно заложить масштабируемость в проект, который не требует пока масштабируемости, но если потребует, нужно сразу увеличить возможности сервиса


    Первым делом - четко определить на какую нагрузку вы рассчитываете и какого типа она будет.
    Например - 10000 запросов в секунду на сервер.
    или 10000 пользователей в день загружающих фронт.
    или 100 тяжелых запросов в базу в минуту.
    До этого разговор будет непонятно о чем.
    Потом проверить сколько может вытянуть текущая архитектура/железо.
    А то может окажется что если добавите +$10 в месяц на инстанс помощнее то вашего текущего сервера вам еще лет на 5 хватит
    Ответ написан
    2 комментария
  • Можете объяснить зеленому что такое MVC?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Господи, в который раз-то уже?

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

    Самое главное, что надо понимать про эмвэцэ.
    Это не 50% твоего приложения. И даже не 10.
    Это тонюсенькая прослоечка, которая обслуживает только один канал общения твоего приложения с внешним миром - браузер. Есть и другие каналы, их много.

    Исходя из этого, получается что
    • Модель входит в эту тройку чисто номинально. Поскольку это и есть все твое приложение, только без интерфейса. И к модели обращаются не только веб контроллеры, но и консольные скрипты, REST контроллеры, сервер очередей и прочее. Отсюда становится понятно, что "модель - это запросы в БД в основном-то" - это дикая чушь.
    • Контроллер - это, как правильно нарисовано на картинке в соседнем ответе - это такая официантка, подай-принеси. Принять запрос от НТТР клиента, преобразовать в понятный для модели вид, запросить модель, получить ответ, вернуть что-нибудь клиенту. Также может заниматься чисто браузерными заморочками типа заголовков, авторизации и пр.
    • Вью - если модель вернула что-то для показа клиенту, то вью это превращает в понятный для браузера вид.
    • Роутер - не упоминается, но незримо присутствует. Преобразует НТТР адреса в вызовы контроллеров.

    Традиционно рекомендую доклад Дмитиря Елисеева с ПХП Раша 2019, там все раскладывается по полочкам.

    5dc1688cad3db637954994.png
    Ответ написан
    7 комментариев
  • Как защитить от ddos по tcp/udp?

    megafax
    @megafax
    web-программист
    отбить маленький ddos своими силами без покупки дорого ПО и железа или аренде, других услуг.

    https://www.cloudflare.com/ - этого достаточно будет для начала
    Ответ написан
    Комментировать
  • Как защитить от ddos по tcp/udp?

    Как защитить свои сервера от от элементарных ddos атак по tcp/udp?
    Смотря какой они интенсивности. Если атака на канал или на протокол, то сетевые фильтры ОС не помогут.

    Есть ли бесплатные решения для защиты своими средствами без привлечения посторонних организаций?
    Был во последнем релизе FreeBSD какой-то инструмент для борьбы с этой напастью. Только этот способ особенно бесплатным не назовёшь: нужно покупать дополнительно сервера, настраивать ПО, поддерживать.

    Как защитить от ddos по tcp/udp?
    Есть Cloudflare с интересными предложениями и самой распределённой системой фильтрации.
    Ответ написан
    Комментировать
  • Как hash_password с солью по умолчанию стал самым лучшим способом хеширования?

    DevMan
    @DevMan
    хэши вообще не расшифровываются. это раз.
    соль рандомная, что делает бессмысленным подбор по заранее подготовленным таблицам. это два.
    в вопросе какие–то дикие фантазии. это три.

    https://ideone.com/2UZmjk
    Ответ написан
    8 комментариев
  • Хостинг для сайта уровня ВК?

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

    @camelCaseVlad
    В UI Development существует концепт оптимистичного UI (optimistic UI).

    Самый простой пример данного концепта - нажатие на кнопку "Мне нравится" со счетчиком поставленных лайков. На клиенте можно сделать +1 сразу же, и не заставлять юзера ждать, пока с сервера придет новое значение лайков на данной кнопке.

    Решение вашей проблемы зависит от выбранных вами инструментов при создании приложения, но вы можете сделать нечто похожее на это:

    Вот как выглядит ТУДУ с ожиданием сервера:

    1*9r4u7IxFQkl8cNcOI4IYUw.gif

    Вот как выглядит с оптимистичным юай:

    1*aOhoD9FUKiEBUQM39zvvUg.gif

    Тут видно, что новый, не записанный на сервере Item отображается в стиле "Loading..."

    Используйте данный подход, дайте загружаемой Item временный ID
    Ответ написан
    Комментировать
  • Vuex best practies или как правильно делать?

    Kozack
    @Kozack
    Thinking about a11y
    Все данные в state должны быть логически разделены на модули. Все комиты тоже должны быть логически разделены внутри каждого модуля. Лично я предпочитаю вообще не создавать корневого хранилища — всё в подмодулях.

    Что касается валидации, то Aetae всё верно написал.

    Лично я использую следующий подход. Он не лучший, и не всегда подходящий.
    — Все компоненты вызывают только action
    — Комиты вызываются только внутрии action после всех проверок и валидаций.
    — Все комиты расчитаны на получение заведомо корректных данных.

    Таким образом:
    мутация — низкоуровневый инструмент для управления хранилищем.
    action — высокоуровневый менеджер по управлению хранилищем, который проверяет все данные, выполняет любые дополнительные манипуляции, преобразования, разбивает большие данные на части если это нужно и так далее, и только потом уже готовые данные передаёт в мутацию.
    компонент — пользователь хранилища. Которые не вызывает мутации напрямую, а вызывает только action. И в исключительных случаях может получить прямой доступ к хранилищу в обход любых проверок и изменений вызвав напрямую мутацию.
    Ответ написан
    Комментировать
  • DI как правильно внедрять "постоянные зависимости"?

    Согласно принципам SOLID, где буковка D — принцип инверсии зависимостей, так делать нельзя. Принцип сформулирован так:
    • Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
    • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

    Т.е. в вашем случае никаких new Connection и new Db в конструкторе класса Post быть не должно. Вы же не собираетесь создавать коннект к БД в каждом классе? В посте, в комментарии, в пользователе?
    Ответ написан
    2 комментария
  • Как создать своего телеграмм бота для создания опросов?

    flapflapjack
    @flapflapjack
    на треть я прав
    вы в ответе готовый код ожидаете? На фрилансе вам помогут. Конкретизируйте вопрос.
    Огромное спасибо))

    Огромное пожалуйста))
    Ответ написан
    2 комментария
  • Как маршрутизировать трафик на впс в зависимости от порта?

    flapflapjack
    @flapflapjack
    на треть я прав
    iptables штоле?

    ipables -A PREROUTING  -d VPS_IP/32 -i eth0 -p tcp -m tcp --dport 7777 -j DNAT --to-destination FIRST_IP:DST_PORT
    ipables -A PREROUTING  -d VPS_IP/32 -i eth0 -p tcp -m tcp --dport 8888 -j DNAT --to-destination SECOND_IP_IP:DST_PORT


    если у вашего впс ip 1.1.1.1, у серверов ип 2.2.2.2 и 3.3.3.3 соответственно, а порты у них у обоих 9999, а интерфейс VPS, который смотрит в интырнет eth0 то:
    ipables -A PREROUTING  -d 1.1.1.1/32 -i eth0 -p tcp -m tcp --dport 7777 -j DNAT --to-destination 2.2.2.2:9999
    ipables -A PREROUTING  -d 1.1.1.1/32 -i eth0 -p tcp -m tcp --dport 8888 -j DNAT --to-destination 3.3.3.3:9999
    Ответ написан
    7 комментариев
  • Что нужно знать для backend разработки?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Выучите PHP.
    99% открытого бэка - написано на нём.
    Ответ написан
    Комментировать
  • Как полностью имитировать нахождение в другой стране?

    CityCat4
    @CityCat4 Куратор тега VPN
    //COPY01 EXEC PGM=IEBGENER
    Купить VPS во Франции/Германии/Кокосовых островах.
    Установить нужную ось.
    Язык оси - только той страны, которую имитируете
    Софт - только на том языке, которую имитируете
    Никаких почт на mail.ru и прочих русскоязычных ресурсах - почту лучше всего держать на местном аналоге (для этого, ессно надо знать местный язык) или на gmail.com
    На русскоязычные ресурсы ходить как можно меньше, без истории, без куков, без ничего...
    Заходить на этот VPS через VPN - это затруднит (но НЕ сделает невозможным) вычисление того, откуда постоянно заходят по RDP/VNC или чем там будете управлять
    Ответ написан
    2 комментария