• Почему при сборке вылезает ошибка "Did you forget to signal async completion"?

    Попробуйте так

    function build (done) {
        gulp.series(
            clean_build, 
            gulp.parallel(
                html_build, 
                js_build, 
                css_build, 
                php_build, 
                fonts_build, 
                image_build
            ),
           done
        )();
    }


    и если что то промис возвращается вот так:
    async function() {
       return await gulp.series(
                clean_build, 
                gulp.parallel(
                    html_build, 
                    js_build, 
                    css_build, 
                    php_build, 
                    fonts_build, 
                    image_build
                )
            )
    }


    Код для размышлений)

    async function x() {
        // вернуть await надо
       	return await async function() {
       		return 'hi';
       }
    }
    
    console.log(x);
    console.log(x()); //<-- Promise
    
    x().then(async (cb) => {
     console.log(cb);
     console.log(cb());
     console.log(await cb());
    });
  • Почему при сборке вылезает ошибка "Did you forget to signal async completion"?

    Влад, по дословному переводу серийные и параллельные выполнения. series добивается синхронности тем что ожидает пока не будет выполнена предыдущая функция (async completion) но сами функции которые он выполняет асинхронные. parallel запускает несколько функций одновременно и ждет ожидания всех. если перевести на "бек php" в первом случае заблокирована сессия и пользователь ждет (фаст пример очень долгий запрос в phpmyadmin) во втором сессии нет и он запускает воркеры fpm сколько хочет одновременно по разным ссылкам(контроллерам) и ждет пока все запросы отработают. Просто все это происходит в рамках одного процесса (созданием контекста выполнения и переключения между ними в моменты когда все равно делать нечего - ожидание I/O диск сеть и т.п.).
  • Почему при сборке вылезает ошибка "Did you forget to signal async completion"?

    gulp 3 считал что если функция не объявлена асинхронной то она синхронная (уж извините за капитанство) и фактом ее завершения является возврат из функции либо ее завершение.

    gulp 4 более строгий (в нем запрещены синхронные функции) и в нем необходимо явно обозначить завершение таска который точно должен быть асинхронным и никак иначе.
    Согласно документации у тебя есть 6 вариантов.

    1. вернуть pipe (Stream)
    2. вернуть Promise
    3. вернуть EventEmitter (const { EventEmitter } = require('events');) после чего вызвать в асинхронной функции у эмиттера событие 'finish'
    4. вернуть RxJS Observable
    5. вернуть вызов дочернего процесса (const { exec } = require('child_process');)

    для синхронных функций, дополнительно есть:
    6. вызвать колбек передаваемый первым аргументом в функцию (function (cb) { ... ; cb(); })

    проблема в том что ты запускаешь синхронную функцию которые теперь запрещены. если выполнение закончилось соответственно тебе говорят «Did you forget to signal async completion»?

    function build () {
        return gulp.series(
            clean_build, 
            gulp.parallel(
                html_build, 
                js_build, 
                css_build, 
                php_build, 
                fonts_build, 
                image_build
            )
        );
    }
    
    exports.build = build();


    это равносильно

    exports.build = gulp.series(
            clean_build, 
            gulp.parallel(
                html_build, 
                js_build, 
                css_build, 
                php_build, 
                fonts_build, 
                image_build
            )
        );;


    Что допустимо, а что будет экспортированно в билд если вызвать без скобочек? правильно, "синхронная" функция build.
  • Как записывать все лайки/дизлайки в бд?

    FanatPHP, https://redis.io/topics/persistence здесь есть подробная инфа по сохранению и "качеству" сохранения, если вдруг появится интерес. Можно настроить чтобы он каждую выполненную комманду писал в файл (что то вроде бинлога) по которому можно восстановится. Я просто сам как-то попал на проект (причем довольно крупный) на котором балансы пользователей хранились в редисе, балансы менялись в нанобаксах и очень часто,иногда несколько раз в секунду для тысяч пользователей. За пару лет было ноль проблем да и до меня вроде конфузов не было, поэтому отношусь менее скептически, и тебе рекомендую. Ну и как не крути а редис это не серебрянная пуля и уж тем более не замена RDB. Он может пригодится как раз в тех случаях когда данные могут изменЯтся чаще чем раз в секунду для большого количества записей одновременно и тратить I/O RDB для этого накладно.
  • Как записывать все лайки/дизлайки в бд?

    FanatPHP, на самом деле мне было интересно как редис реагирует на быдлокод а не решение ради решения). суть в том что благодаря луа можно создавать кастомные структуры данных на базе встроенных и ничего не мешает завести 2 сета для пользователя и статьи соответственно. На установку мы пишем скрипт который ведет эти 2 сета благодаря этому мы можем полностью обеспечить все требования ACID а скрипт выше выполняется 1 раз как "миграция" которая просчитает все необходимое. На самом деле мне не нужно тебе доказывать что носкуль "удобнее" чем рдб. Достаточно прикинуть сколько по факту вывезет sql операций записи. MySQL на самом мощном железе в OLTP Read Write проводит 50000 транзакций в секунду. До этого порога такими вещами можно не заморачиваться... но после уже никуда не деться... при условии что на это железо есть деньги разумеется))) https://www.mysql.com/why-mysql/benchmarks/mysql/ тут есть инфа
  • Как записывать все лайки/дизлайки в бд?

    FanatPHP, написать запрос не? тут конечно все хардкодом но все же

    {
        "name": "socengel/redistest",
        "minimum-stability": "dev",
        "require": {
            "predis/predis": "^1.1",
            "veloper/bench": "dev-master"
        }
    }

    <?php
    
    include 'vendor/autoload.php';
    
    $client = new \Predis\Client();
    
    $client->connect();
    
    for ($articleId = 0; $articleId < 1000000; ++$articleId) {
        for ($i = 0; $i < rand(0, 500); ++$i) {
            $client->sadd('article' . $articleId, [rand(0, 100000)]);
        }
    }


    <?php
    
    include 'vendor/autoload.php';
    
    $client = new \Predis\Client();
    
    $client->connect();
    
    Bench::start();
    
    $lua = <<<LUA
    local ans, has, cursor = {}, {}, "0";
    repeat
        local t = redis.call("SCAN", cursor, "MATCH", "*", "COUNT", 10000000000);
        local list = t[2];
        for i = 1, #list do
            local s = list[i];
            local u = redis.call("SISMEMBER", s, "50000");
            if u == 1 then 
                if has[s] == nil then has[s] = 1; ans[#ans + 1] = s; end;
            end;
        end;
        cursor = t[1];
    until cursor == "0";
    return ans; --or return ans;
    LUA;
    $result_set = $client->eval($lua, 0);
    print_r(Bench::getStats());
    var_export($result_set);


    на выходе
    intel core i9 9900k DDR4 3200
    Array
    (
        [start] => 1607519423.9113
        [stop] => 
        [elapsed] => 1.4493088722229
    )


    да для пербора миллиона статей придется потратить полторы секунды но ничего не мешает закешировать данный результат... думаю объяснять что это самое тупое решение в лоб, не нужно?
  • Nginx загружает index.php, как это исправить?

    ПОЛНОСТЬЮ ЗАМЕНИ ! без своих кривых коментариев))) и перезапусти nginx с новой конфигурацией а то мне вообще кажеться что ты просто файл редактируешь.

    и выполни sudo nginx -t точно все ок?
  • Nginx загружает index.php, как это исправить?

    нет фпм ип адрес сервера не прослушивает, если его так не настраоить специально. пробовал последний конфиг который я кидал? ты можешь по сути полностью его заменить и должно работать
  • Nginx загружает index.php, как это исправить?

    #} в самом конце может вызвать ошибку. поправил твой конфиг чтобыф ты не запутался

    server {
            listen 80 default_server;
            listen [::]:80 default_server;
    
            root /var/www/html;
    
            index index.php index.html index.htm index.nginx-debian.html;
    
            server_name 185.18.54.106;
    
            location / {
                try_files $uri $uri/ /index.html;
            }
    
            location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
            }
    }
  • Nginx загружает index.php, как это исправить?

    то что я скинул это нужно в nginx добавить

    тут ты указываешь где искать собственно этот fpm либо по юникс сокету что предпочтительнее либо по порту

    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    #fastcgi_pass 127.0.0.1:9000;

    server {
            listen 80 default_server;
            listen [::]:80 default_server;
    
            # SSL configuration
            #
            # listen 443 ssl default_server;
            # listen [::]:443 ssl default_server;
            #
            # Note: You should disable gzip for SSL traffic.
            # See: https://bugs.debian.org/773332
            #
            # Read up on ssl_ciphers to ensure a secure configuration.
            # See: https://bugs.debian.org/765782
            #
            # Self signed certs generated by the ssl-cert package
            # Don't use them in a production server!
            #
            # include snippets/snakeoil.conf;
    
            root /var/www/html;
    
            # Add index.php to the list if you are using PHP
            index index.php index.html index.htm index.nginx-debian.html;
    
            server_name 185.18.54.106;
    
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ /index.php?$uri&$args;
            }
    
            # pass PHP scripts to FastCGI server
            #
    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        #fastcgi_pass    127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param DOCUMENT_ROOT /var/www/;
        fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
        fastcgi_param PATH_TRANSLATED /var/www$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            location ~ /\.ht {
                   deny all;
            }
    }


    Но если нужны настройки имеено fpm то тут надо искать как он установлен даже в линуксе конфиги по разным дистрибутивам лежат в разных директориях /etc/php /usr/local/etc/php и тп а на винде доставай бубен и разбирайся как он запускается.
  • Как записывать все лайки/дизлайки в бд?

    FanatPHP, можно лайки хранить в сете редиса не записывая в базу. таким же образом можно хранить какие нибудь подписки на что либо и т.п. типы данных. благодаря скорости можно будет хоть каждые 0,1 секунды менять статус со вкл на выкл с реляционной бд на больших объемах будут проблемы. Так же как только мы ставим в один ряд RDB и count() то тоже все не ок придется денормализовывать поле.
    Так что nosql имеет место быть). и редис умеет писать на диск.
  • Может ли сайт донор узнать, что я использую его картинки?

    Еще можно добавить что после проверки реферера могут вместо ожидаемой картинки прислать фото полового органа того же размера. Так что встраивание по чужим ссылкам может привести к недвусмысленным курьезным ситуациям.
  • Как без физического DVD диска использовать его образ на флешке?

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

    socengel
    @socengel Автор вопроса
    Решил вопрос. перепаковал образ с дисков из SWM в один большой образ WIM который записал на флешку и программа распаковки уже смогла нормально запуститься. Если кто-то столкнется с подобным ищите по теме "imagex" "dism" как я понял большинство систем восстановления построено на основе данных программ.
  • Как без физического DVD диска использовать его образ на флешке?

    socengel
    @socengel Автор вопроса
    мне кажется что самый адекватный ответ тех поддержки купить болванки и записать образы на диск... суть вопроса не в hp это вопрос уровня бутлоадера и эмуляции. Я подумываю над возможностью использованая KVM эмуляции в linux с подключением реального Винчестера. Собственно в эмуляторе и поменять диск а распаковать на реальный диск.

    Либо используя какой-нибудь Virtualbox распаковать в виртуалке, а потом известными утилитами снять образ непосредственно раздела и уже восстановить известными способами.
  • Можно ли изменить типовую конфигурацию так чтобы не было видно изменений при сравнении через настройку поддержки?

    socengel
    @socengel Автор вопроса
    АртемЪ, возможно поскольку я не являюсь програмистом 1с я воспринимаю все немного иначе.
  • Можно ли изменить типовую конфигурацию так чтобы не было видно изменений при сравнении через настройку поддержки?

    socengel
    @socengel Автор вопроса
    АртемЪ, в конце утверждения ставят точку. И к тому же вырывать цитату из контекста не очень хорошо. По вашей цитате кажется будто бы я считаю что 1с дырявый софт и все об этом молчат и не передает суть вопроса который был задан в оригинале.
  • Можно ли изменить типовую конфигурацию так чтобы не было видно изменений при сравнении через настройку поддержки?

    socengel
    @socengel Автор вопроса
    Артём Рыженький, Боюсь что вы не вчитались в вопрос. Вопросы безопасности всегда будут из разряда "Что было раньше - яйцо или курица". если 1с дырявый софт и все это знают то чего скрывать?
  • Влияет ли текст содержащийся в теге ссылки на SEO?

    socengel
    @socengel Автор вопроса
    Спасибо всем за помощь отмечу ответ как правильный.