Задать вопрос
  • Почему не запускается скрипт Python с Гитхаба под Windows?

    @wtfowned Автор вопроса
    AWEme, спасибо за подробный ответ, я догадывался об этом ) решил поставить убунту на виртуалку на будущее для бОльшего удобства и адаптивности
  • Почему не запускается скрипт Python с Гитхаба под Windows?

    @wtfowned Автор вопроса
    C:\Users\nepoh\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\python.exe: No module named tgnize.__main__; 'tgnize' is a package and cannot be directly executed
  • PhpStorm нагрузка на CPU под 100% (Mac OS) это норма?

    @wtfowned
    Bolashew, уже не припомню, 2+ года прошло. Насколько я помню решилось исключением из индексации папок + дроблением на мелкие проекты, а может и само собой.
  • Как увидеть запросы которые блокирует Nginx, список IP?

    @wtfowned Автор вопроса
    403 пишет тоже
    но я так понимаю не в случае если был отказ еще на уровне блока Ngingx по IP на уровне сервера.
  • Как увидеть запросы которые блокирует Nginx, список IP?

    @wtfowned Автор вопроса
    rionnagel, стоят дефолтные настройки от панели VestaCP - она так складывает. Тут же есть и Error логи, все в одном месте.
  • Как найти и удалить все комментарии, записи, фотографии и видео в вк?

    @wtfowned
    Не работает почему-то метод этот. Пустые результаты, хотя все верно указываю (timestamp , тип постов).
  • Как протестировать блокировку по IP заданную в Nginx / Apache?

    @wtfowned Автор вопроса
    Дмитрий Шицков, не все так просто, это первое и самое очевидное решение которое стоило бы использовать, но оно не подходит по ряду причин, в частности :
    Аккаунтов, как и доменов -много, они все на бесплатных тарифных планах, а клаудфлер только ща последний год несколько раз менял правила, то он бесплатно блокирует, то нет.
    Ну и держать в 40 аккаунтах на сотнях доменов все списки не очень удобно, когда все лежит в 1 конфиге, часть доменов не через клауд раьотает тоже.
  • Как протестировать блокировку по IP заданную в Nginx / Apache?

    @wtfowned Автор вопроса
    Спасибо! Кажется то что нужно.
    Но проьлема в том что я могу /16
    3 заблокировать, а скрипт покажет /16 этой же сети.

    Дмитрию ответил, не раьотает в такой вариант из за cloudflare.
  • Как протестировать блокировку по IP заданную в Nginx / Apache?

    @wtfowned Автор вопроса
    Дмитрий Шицков, у меня все сайты через cloudflare идут и вижу только коннекты с их ИП адресов, реальных не вижу. Как не пробовал настроить, не получается. В iptables блокировал все это изначально, оно просто не раьотает и никак не пойму почему. Netstat показывает ip клауд, nginx же уже видит реальный ip клиента (беру его из заголовков cloudflare, по инструкции с их сайта).
  • Как вывести таблицу с обращениями из логов к множеству сайтов по IP / Useragent?

    @wtfowned Автор вопроса
    Еще вот такой вариант нашел, наверное оптимальный, но генерю его руками через Excel шаблон. Как это сделать КРАСИВО?

    { echo "DOMEN1.com";  cat DOMEN1.com.log  | grep -i googlebot-image | awk '{print $9}' | sort | uniq -c | sort -nr ;  echo "DOMEN2.com"; cat DOMEN2.com.log  | grep -i googlebot-image | awk '{print $9}' | sort | uniq -c | sort -nr ;  } > GoogleImages.log
  • Как скрыть PHP код на сервере при условии что надо его править?

    @wtfowned Автор вопроса
    Рут доступ нужен потому что на сервере работает VestaCP, и скриптом PHP запускается выполнение команд самой Весты, в частности разные служебные команды https://vestacp.com/docs/cli/ , например создание баз данных и права на них (все это делается в 1 команду в весте), дампы, добавление доменов и прочее.

    То есть чтобы запустить работающий сайт на сервере и "прописать" его везде как следует, добавить для него базу и залить в нее дамп - делается в пару команд, и все это возможно под рутом только. Мой PHP скрипт выполняет эти команды, в числе прочих.
  • Как придумать алгоритм - заменить слова в HTML на синонимы из массива при каждом вхождении?

    @wtfowned Автор вопроса
    Robur,
    1. Как часто вам нужно это делать и во сколько мс надо уложиться?
    24/7/365

    2. Какие лимиты по памяти/процессору?
    Исхожу не от ограничений аппаратных, а от задачи. Если ресурсов будет требоваться слишком много, то , вероятно, игра не стоить свеч. Поэтому лучше исходить из меньше == лучше.

    3. Вы точно уверены что стоит переживать за производительность?
    Да, ответил в предыдущем пункте. Если ресурсов будет требоваться слишком много - смысла не имеет. Т.к. это тестовое направление деятельности, то желательно укладываться в базовые 2GB оперативки на скрипты , 2-4 CPU серверных cores (2.4 - 3.6 GHz), и делать хотя-бы пару страниц в секунду в один поток, потоков может быть десятка 2 одновременно.

    > Если да - делайте оптимизации. обрабатывайте строки отдельно, explode замените на пробег в цикле с буфером куда будете складывать слова можно много чего еще придумать.
    Ага, изначально сделал explode по пробелу, кэширование массивов придется делать похоже...
  • Как придумать алгоритм - заменить слова в HTML на синонимы из массива при каждом вхождении?

    @wtfowned Автор вопроса
    dimonchik2013, делал до этого 100 шабов спина на 100к страниц примерно, всего 500к вышло, через софт сторонний.

    Сейчас делаю пока без синонимайза до 500к страниц в день, выйти надо на х20 мощность (серваки простаивают!) и со спином.
  • Как придумать алгоритм - заменить слова в HTML на синонимы из массива при каждом вхождении?

    @wtfowned Автор вопроса
    О, спасибо! Эта идея раньше не пришла в голову, а на деле одна из самых простых наверное получается.

    Но, переживаю за производительность.

    Вес 1 файла который нужно обработать - 300кБ, и это HTML код с JS и прочим, замен на такой файл придется 20 от силы в лучшем случае.

    Только что сделал explode , получается 14500 элементов.
    Далее для 1к массивов по 5 слов внутри итого 5к поисков по массиву в 14500 элементов функцией
    php.net/manual/ru/function.array-keys.php получается по предварительным прикидкам очень долго и ресурсоемко.
  • Как придумать алгоритм - заменить слова в HTML на синонимы из массива при каждом вхождении?

    @wtfowned Автор вопроса
    Не думаю, а получается уже, но делал до этого в полуручном режиме, хочу по-взрослому :)

    По сабжу - это варик описанный мной...
  • Как создать таблицы MYSQL на другом диске?

    @wtfowned Автор вопроса
    kisaa, спасибо! описка вышла и не обратил внимания!
  • Как создать таблицы MYSQL на другом диске?

    @wtfowned Автор вопроса
    Спасибо за совет, но похоже не то.
    Там права по умолчанию все даются для пользователя насколько знаю.
    После команды этой появилась ошибка access_denied без указания строки в файле SQL, до этого был указатель.
    mysql> GRANT FILE ON *.* TO 'admin_sdb_disku'@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> exit;
    Bye
    root@144:/home/admin/tmp# mysql -u admin_sdb_disk -p admin_sdb_disku < /mnt/sdb/dumps/test_table.sql;
    Enter password:
    ERROR 1045 (28000): Access denied for user 'admin_sdb_disk'@'localhost' (using password: YES)
  • Innodb_buffer_pool_instances - сколько ставить?

    @wtfowned
    Максим Морозов, а тесты производительности какие-нибудь проводили?
  • VestaCP Firewalld за CloudFlare Не блокирует запросы - почему?

    @wtfowned Автор вопроса
    Владимир, спасибо за труд!
    Но, есть вопросы.
    1. Тогда что не так с Firewall? Вообще нет смысла с ним ничего делать и пытатьс получить результат?
    2. У меня больше 100 доменов. Заменить для каждого в принципе можно, не главное. Но каждый раз когда кого-то баню опять разносить на все?
    3. Куда в код вносить , после чего?

    Типичный конфиг nginx под домен:
    server {
        listen      111.69.61.111:80;
        server_name domain.com www.domain.com;
        error_log  /var/log/apache2/domains/domain.com.error.log error;
    
        location / {
            proxy_pass      http://111.69.61.111:8080;
            location ~* ^.+\.(bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
                root           /home/admin/web/domain.com/public_html;
                access_log     /var/log/apache2/domains/domain.com.log combined;
                access_log     /var/log/apache2/domains/domain.com.bytes bytes;
                expires        max;
                try_files      $uri @fallback;
            }
        }
    
        location /error/ {
            alias   /home/admin/web/domain.com/document_errors/;
        }
    
        location @fallback {
            proxy_pass      http://111.69.61.111:8080;
        }
    
        location ~ /\.ht    {return 404;}
        location ~ /\.svn/  {return 404;}
        location ~ /\.git/  {return 404;}
        location ~ /\.hg/   {return 404;}
        location ~ /\.bzr/  {return 404;}
    
        include /home/admin/conf/web/nginx.domain.com.conf*;
    }

    Конфиг /etc/nginx/nginx.conf основной
    # Server globals
    user                    www-data;
    worker_processes        auto;
    worker_rlimit_nofile    65535;
    error_log               /var/log/nginx/error.log;
    pid                     /var/run/nginx.pid;
    
    
    # Worker config
    events {
            worker_connections  1024;
            use                 epoll;
            multi_accept        on;
    }
    
    
    http {
        # Main settings
        sendfile                        on;
        tcp_nopush                      on;
        tcp_nodelay                     on;
        client_header_timeout           60s;
        client_body_timeout             60s;
        client_header_buffer_size       2k;
        client_body_buffer_size         256k;
        client_max_body_size            256m;
        large_client_header_buffers     4 8k;
        send_timeout                    60s;
        keepalive_timeout               15s; # bilo 30s
        reset_timedout_connection       on;
        server_tokens                   off;
        server_name_in_redirect         off;
        server_names_hash_max_size      512;
        server_names_hash_bucket_size   512;
    
    
        # Log format
        log_format  main    '$remote_addr - $remote_user [$time_local] $request '
                            '"$status" $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
        log_format  bytes   '$body_bytes_sent';
        #access_log          /var/log/nginx/access.log main;
        access_log off;
    
    
        # Mime settings
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
    
        # Compression
        gzip                on;
        gzip_static         on;
        gzip_vary           on;
        gzip_comp_level     6;
        gzip_min_length     1024;
        gzip_buffers        16 8k;
        gzip_types          text/plain text/css text/javascript text/js text/xml application/json application/javascript application/x-javascript application/xml application/xml+rss application/x-font-ttf image/svg+xml font/opentype;
        gzip_proxied        any;
        gzip_disable        "MSIE [1-6]\.";
    
        # Proxy settings
        proxy_redirect      off;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass_header   Set-Cookie;
        proxy_buffers       32 4k;
        proxy_connect_timeout   30s;
        proxy_send_timeout  90s;
        proxy_read_timeout  90s;
    
            
        # Cloudflare https://www.cloudflare.com/ips
        set_real_ip_from   103.21.244.0/22;
        set_real_ip_from   103.22.200.0/22;
        set_real_ip_from   103.31.4.0/22;
        set_real_ip_from   104.16.0.0/12;
        set_real_ip_from   108.162.192.0/18;
        set_real_ip_from   131.0.72.0/22;
        set_real_ip_from   141.101.64.0/18;
        set_real_ip_from   162.158.0.0/15;
        set_real_ip_from   172.64.0.0/13;
        set_real_ip_from   173.245.48.0/20;
        set_real_ip_from   188.114.96.0/20;
        set_real_ip_from   190.93.240.0/20;
        set_real_ip_from   197.234.240.0/22;
        set_real_ip_from   198.41.128.0/17;
        #set_real_ip_from   2400:cb00::/32;
        #set_real_ip_from   2606:4700::/32;
        #set_real_ip_from   2803:f800::/32;
        #set_real_ip_from   2405:b500::/32;
        #set_real_ip_from   2405:8100::/32;
        #set_real_ip_from   2c0f:f248::/32;
        #set_real_ip_from   2a06:98c0::/29;
        real_ip_header     CF-Connecting-IP;
    
    
        # SSL PCI Compliance
        ssl_session_cache   shared:SSL:10m;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers        "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    
    
        # Error pages
        error_page          403          /error/403.html;
        error_page          404          /error/404.html;
        error_page          502 503 504  /error/50x.html;
    
    
        # Cache settings
        proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=1024m;
        proxy_cache_key "$host$request_uri $cookie_user";
        proxy_temp_path  /var/cache/nginx/temp;
        proxy_ignore_headers Expires Cache-Control;
        proxy_cache_use_stale error timeout invalid_header http_502;
        proxy_cache_valid any 1d;
    
    
        # Cache bypass
        map $http_cookie $no_cache {
            default 0;
            ~SESS 1;
            ~wordpress_logged_in 1;
        }
    
    
        # File cache settings
        open_file_cache          max=10000 inactive=30s;
        open_file_cache_valid    60s;
        open_file_cache_min_uses 2;
        open_file_cache_errors   off;
    
    
        # Wildcard include
        include             /etc/nginx/conf.d/*.conf;
    }