• Как быстро и с минимальной погрешностью подсчитать число записей в таблице с миллиардами записей?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Давайте анализировать. Гугл не в помощь в вашем случае.

    How to Define an Auto Increment Primary Key in Pos...

    При таких больших таблицах важно чтобы была непрерывность индекса.
    Это значит, что удалять записи из таких таблиц дурной тон. А из этого следует, что количество записей равно значению следующего индекса. Значит достаточно узнать значение индекса.
    Ответ написан
  • Почему при присвоении значения переменной «1» переменной «2», переменная «2» заменяется на «1»?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Когда вы присваиваете объект, вы присваиваете ссылку на объект, а не делаете его копию. А потом переписываете поля самого emptyOrder, через ссылку на emptyOrder в session[ID].order. Нужно делать копию данных...

    session[ID] = session[ID] || {
    log: [PathTmpl.main_menu],
    inline_log: '',
    name: ctx.from.first_name,
    last_name: ctx.from.last_name,
    auth: 'new',
    admin: false,
    orders: [],
    phone: '',
    delivery: emptyAdress,
    order: Object.assign({}, emptyOrder)
    }

    P.S. Не забудьте подключить полифил для Object.assign или пользуйтесь аналогичным методом фреймворка.
    Ответ написан
  • Какие достоинства хранения шаблонов в БД?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    При проектировании CMS все остаётся вопрос в СТРУКТУРЕ разделении КОНТЕНТА редактируемого контент менеджером и статичным ШАБЛОНОМ в который этот контент помещается. И баланс здесь очень скользкий. Я бы сказал это искусство приблизится в плотную к этому балансу. Да и сам бланс зависит от бизнес модели, структуры компании, методов работы и ещё многих факторов.

    (Шаблоны) Одна крайность - прописать все блоками, и тогда контент менеджеру останется только тупая работа по вбиванию текста картинок в блоки. Но тогда на каждый "пук" практически для каждой статьи нужно будет дергать разработчика, что тот подправил вид. Это хорошо для проектов с почасовой оплатой услуг DEV-компании. Разработчику много постоянной работы и максимальное оплачиваемое время.

    (Контент) Вторая крайность - сделать простую серверную сборку с контента хранящегося в базе данных. И пусть контент менеджер корячится с версткой страниц сам. Разработчики только минимально подправляют стили по требованию. База максимально простая, контент стандартизирован в одной таблице. Только динамические данные подтягиваются отдельно. Это идеальный вариант когда разработчику платят фиксированную суму, а потом платят долгий срок за поддержу продукта. Максимум свободного времени у девелопера. Но заказчик не понимает за что платить, работает же он, а не программисты.

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

    P.S. Фактически на такой маленькой фиче как баланс структуры, шаблонов и контента, построен весь рынок веб разработки. :)
    Ответ написан
    Комментировать
  • "Global" или "&"?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Объявляя глобальную переменную в области видимости функции - вы прописываете даете доступ к ней из функции и для переменной доступ к функции (именно так в двух направлениях). При этом локальная изменения переменной влияет на значение глобальной, но и изменения глобально тоже влияют на значение переменной внутри функции.

    При этом возникают непредвиденные ситуации, сложные к выявлению.
    Например: Если при выполнении функции у вас случилось исключение . Обработчик исключения может с легкостью изменить глобальную переменную. Но если функция не учитывает эту "асинхронность", то далее может случится все что угодно!!! - зацикливание, деление на ноль или, что еще хуже, случайное прохождение логики по другой ветке (которое будет сложно выявить)...

    Последствия применения глобальных переменных самые плачевные:
    • сложно обнаруживаемые ошибки;
    • безопасность - "хромая на две ноги";
    • сложности в рефакторинге и понимании кода;
    • сложность в масштабировании стремящаяся к инифинимуму;
    • не прогнозируемое значение переменной;
    • возможная инициализация/реинициализация переменной в разных местах кода.

    Что относится к косвенному вызову/привязке переменной или как это ещё называют "внедрение зависимостей" (Dependency injections) - значоком "&"...
    Такая переменная может хранится в любой области видимости, а не только в глобальной. Но проблемы - те же, что и при использовании глобальной переменной, может даже и более усугубленные. Так как ещё более сложно выявление ошибок и возможна перелинковка таких параметров между разными функциями использующими друг-друга!

    Принципы такие:
    • Если вы используете глобальные переменные, то масштабируемость и отказоустойчивость кода будет скорее всего никакая. Код сразу в топку;
    • Если косвенная привязка появляется в параметрах функции - это явный показатель того, что функция слишком сложна и скорее всего нужно разделить функцию на меньшие, или создать класс на основе этой функции, или разделить класс на составные.
    Ответ написан
    Комментировать
  • Почему большой расход RAM в фоновых PHP скриптах?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Как на меня то 300 штук фоновых это многовато. Нужно ли столько в риллтайм?

    Все запросы не риллтайм к фоновому скрипту - выделить, объединить в queue и/или перенести на исполнение rest server/service. Пусть фоновый скрипт/сервис/сервер (в единственном или небольшом числе) исполняет их потихоньку вытягивая из очереди.

    P.S. Просто перенеся функциональность фонового скрипта на rest api ничего не поменяется. Будет тоже количество соединений. И "те же грабли, только в профиль."
    Ответ написан
    3 комментария
  • Как реализовать семантическое версионирование?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    А прописать seed и коммитить в репозиторий.

    Почитайте в ларавель как реализовано.

    Для структуры базы есть Migrations....

    А для снепшотов из базы, нужно уже искать/писать модуль на уровне реализации... Например...

    Если вы имеете ввиду уровень самой базы.
    Ищите реализации версионности структуры через view или встроенные процедуры: Например... и Второй пример...

    В wordpress реализована версионность на примитивном уровне и только материалов. Тоже можно посмотреть/поанализировать.
    Ответ написан
  • Почему не обрабатывает скрипт?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    $result -> bindValue(':mail', $_POST['mail'], PDO::PARAM_STR);      
       // Параметр из массива не тянется... только значение


    P.S. md5 ОБЯЗАТЕЛЬНО выкинь из паролей, пользуйся как минимум sha. Изучи функцию password_hash...
    Ответ написан
  • Как отцентрировать fixed/absolute элемент не используя хак top/transform?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Используй полно экранную обертку с display flex, или table, или inline-block c vertical-align center ...

    Пример FLEX на JSfiddle
    Пример TABLE на JSfiddle
    Пример INLINE-BLOCK на JSfiddle
    Ответ написан
    Комментировать
  • Как подойти к реализации PSD->HTML->PDF->image или PSD->HTML->image->PDF на PHP?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Если вы конвертируете страницу сначала в картинку, то потом в PDF её конвертировать нету никакого смысла!!!
    Это например: приведет к объединению текста в картинку, что сильно снизит качество печати готового PDF и уничтожит возможность пользователя копировать текст.

    Потому не вижу проблем в вашей концепции. Но вообще лучше wkhtmltopdf.org
    Рекомендую только сделать таблицу стилей для печати. А PDF, по стилям близкий к CSS таблице для печати страницы - вот её и нужно подключать при экспорте в PDF.
    Ответ написан
    Комментировать
  • Как понять замыкания, а в частности, присвоения вида fn = function()?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Все просто. В замыкании и не замыкании нет разницы для интерпретатора - это не исключительная ситуация.
    Нужно понять: замыкание это алгоритм, а не конструкция как например цикл или функция!!!

    Функция createCounter() - возвращает анонимную функцию.
    В анонимной функции используется переменная createCounter.

    При просто вызове createCounter()(); :
    createCounter() - инициализирует переменную (три раза) и возвратит анонимную функцию.
    И три раза происходит вызов анонимной функции - вторые ().
    После каждого из трех вызовов переменная numberOfCalls созданная при вызове createCounter уже не нужна.
    Анонимная функция больше не будет использована в этом контексте.
    В итоге функция и замкнутая переменная три раза попадают в уборщик мусора.

    При Сохранении анонимной функции в переменную:
    Во-первых: numberOfCalls будет инициализирована только один раз, при записи fn = createCounter().
    Где контекст анонимной функции записывается в переменную fn.
    Во-вторых: так как контекст вызова сохранен, то замкнутая переменная и анонимная функция останутся лежать в нем.
    В-третьих: при каждом вызове анонимной функции в сохраненном контексте переменная будет увеличиваться так как старое значение не инициализировано и не выброшено.

    var fn = createCounter();
    
    fn();
    fn();
    alert(fn())  // =3
    fn = createCounter();
    fn();
    alert(fn())  // =2
    Ответ написан
    1 комментарий
  • Как сделать плавное удаление класса?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    jquery UI

    $( "#effect" ).removeClass( "newClass", 1000, callback );


    Если без jQuery.
    То просто поставьте в блоке и в классе
    transion: all...
    Но тогда работать будет не все. Например display:none; сразу спрячет блок.
    Ответ написан
    Комментировать
  • Почему не коректно работает код?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    result.push(maxElement); нужно поставить после внутреннего цикла.

    У вас каждый раз когда срабатывает условие (maxElement < arr[i][j]) в результат вносится maxElement. Должно быть так:

    function largestOfFour(arr) {
        let result = [];
        for (let i = 0; i < arr.length; i++) {
            let maxElement = arr[i][0];
            for (let j = 0; j < arr[i].length; j++) {
                if (maxElement < arr[i][j]) {
                    maxElement = arr[i][j];
                }
            }
            result.push(maxElement);
        }
        return result;
    }
    Ответ написан
    Комментировать
  • Как найти символы с помощью регулярного выражения?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    /[A-Z\d]{20}/
    Ответ написан
    Комментировать
  • Как сделать POST запрос с переходом на нужную вьюху?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Не делать через AJAX.

    НЕ?

    <form method="post" action=" {URL} ">

    Если сильно надо, создай временную форму из внутренних данных и засабмить JS-ом.

    Если это корзина. То делать её без формы ни в коем случае нельзя. Потом СЕО-шник не сможет скринить Цели по AJAX форме.
    Ответ написан
  • В чем может быть проблема?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Класс "clearfix" нужно добавить.

    <section class="mild clearfix">
    Ответ написан
    1 комментарий
  • Кто знает плагин (желательно на ванильном JS) кастомного горизонтального скролла с функцией Drag Mouse?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Dragon

    Просто повесь на галерею class="dragon" и подключи скрипт на страницу. Правда он jQuery, а не ванильный.
    Ответ написан
  • Как реализовать Drag?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Подключаешь Dragon на страницу.
    И class="dragon" на content.
    Ответ написан
    Комментировать
  • Как удобно написать большой RegExp на нескольких строчках?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Удобнее вот так: regex101
    Ответ написан
    Комментировать
  • Как задать между этими картинками отступ?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Убрать у елементов float:left; и сделать их display:inline-block;.
    Для верстки блоков не используйте float, это изначально не эфективная и устаревшая технология.
    Есть флекс блоки. Искорените из себя "псевдо табличную" верстку - это зло.

    Решение на jsfiddle.net...
    Ответ написан
  • Слайдер на css - как задать стиль активной кнопке?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Решение

    Основные тезы:
    1. Перемещаем указатели на inner-content-# внаружу самого content;
    2. Стилизируем кнопки
    #content-inner-1:target #nav #button1,
    #content-inner-2:target #nav #button2,
    #content-inner-3:target #nav #button3,
    #content-inner-4:target #nav #button4,
    #content-inner-5:target #nav #button5,
    #content-inner-6:target #nav #button6 { background:red; }

    3. Перемещяем их внутрь последнего #inner-content-6 но не в #content
    Ответ написан
    Комментировать