Задать вопрос
  • Забыл название сервиса поиска похожих по html-коду сайтов. Не напомните?

    @yakudryav
    https://publicwww.com - простые и распространенные куски ищет бесплатно (более редкие - платно)
    Ответ написан
    Комментировать
  • Как задать модулю yii2 errorAction?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброй ночи.
    В файле ***Module.php
    Yii::$app->errorHandler->errorAction = 'admin/default/error';

    В контролере
    public function actions()
        {
            return [
                'error' => [
                    'class' => 'yii\web\ErrorAction'
                ]
            ];
        }
    Ответ написан
    2 комментария
  • Ошибка "Could not open input file: composer.phar" на ubuntu 16.04?

    chazovs
    @chazovs
    Корпорация Центр
    Попробуйте ссылаться без php, как к исполняемому файлу:
    composer require facebook/webdriver
    Ответ написан
    Комментировать
  • Почему теряет связь windows server 2016 и centos 7?

    athacker
    @athacker
    В момент пропадания связи посмотрите списки мак-адресов в кэше обоих хостов, и сравните с фактическими MAC-адресами на самих хостах. Не появляется ли в кэшах внезапно какой-нибудь левый мак в привязке к IP этих хостов.
    Ответ написан
    1 комментарий
  • Ошибка при попытке генерации CRUD в Yii2?

    @HeBonpoc
    Там нужно прописывать имя класса вкупе с пространством имён. То есть не User, а например app\models\User, не SiteController, а app\controllers\SiteController.
    Ответ написан
    1 комментарий
  • Правила apache для nginx?

    @dodo512
    # Бан "плохих" ботов для снижения нагрузки на серверп
    RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|MJ12bot|DotBot|BUbiNG\ Crawler|BUbiNG|FaceBook\ Crawler|FaceBook|SemrushBot|LinkdexBot|Alexa\ Robot|Alexa|Ads.txt-crawler|Powermarks|GrapeshotCrawler|grapeshot|SimplePie|360Spider|CCBot|SeznamBot|LinkpadBot|BLEXBot) [NC]
    RewriteRule .* - [R=403,L]
    
    # Обратная совместимость со старыми страницами
    RewriteRule ^pages/(.*)$ /page/$1 [L,R=301]
    
    # Редирект с WWW
    RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    Эти три правила на nginx будут выглядеть так:
    server {
    listen ip:80;
    server_name www.111.com;
    return 301 http://111.com$request_uri;
    }
    
    server {
    listen ip:80;
    server_name 111.com;
    
    if ($http_user_agent ~* "(AhrefsBot|MJ12bot|DotBot|BUbiNG\ Crawler|BUbiNG|FaceBook\ Crawler|FaceBook|SemrushBot|LinkdexBot|Alexa\ Robot|Alexa|Ads.txt-crawler|Powermarks|GrapeshotCrawler|grapeshot|SimplePie|360Spider|CCBot|SeznamBot|LinkpadBot|BLEXBot)") {
        return 403;
    }
    
    rewrite ^/pages/(.*)$ /page/$1 permanent;

    Этот фрагмент нужно поставить вместо вашего
    server {
    listen ip:80;
    server_name 111.com www.111.com;
    Ответ написан
    6 комментариев
  • Config apache + nginx для нагруженного проекта?

    shambler81
    @shambler81 Куратор тега Linux
    nginx+apache2+PHP-FPM

    spoiler
    nginx{

    ######################################################################
    ## Server configuration
    ######################################################################
    listen *:80;
    server_name test3.ks03.ru ;
    root /var/www/test3.ks03.ru/web;

    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены
    error_log /dev/null crit;
    access_log off;

    ######################################################################
    ## Errors send to apache2
    ######################################################################
    # у апача своих алиасов куча, а так же некоторая статика отдается
    # средствамси php, по этому все ошибки обрабатывать только apache2
    error_page 401 403 404 405 500 502 503 = @fallback;
    location @fallback {
    proxy_pass http://127.0.0.1:82;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    ######################################################################
    ## Locations configuration
    ######################################################################
    #Отключаем логирование ошибок No such file or directory
    ## Disable .htaccess files

    location ~ /\.ht {
    deny all;

    access_log off;
    log_not_found off;
    }
    ##
    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }
    ##
    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }
    ##
    ######################################################################
    # сервисы на сайте phpmyadmin почта и letxencrypt
    location /phpmyadmin/ {
    deny all;
    }
    ##
    location /webmail/ {
    rewrite ^/(.*)$ https://$http_host:8080/$1 permanent;
    }
    # letsencrypt
    location /.well-known/acme-challenge/ {
    alias /usr/local/ispconfig/interface/acme/;
    default_type text/plain;

    }
    # static content
    # Отдаем статику напрямую с nginx
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {
    root /var/www/test3.ks03.ru/web;
    access_log off;
    expires 30d;
    }

    # default location
    location / {
    index index.php index.html index.htm;
    proxy_pass http://127.0.0.1:82;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    }


    server {
    ######################################################################
    ## Server configuration
    ######################################################################
    listen *:443 ssl http2;
    server_name test3.ks03.ru ;
    root /var/www/test3.ks03.ru/web;

    ######################################################################
    ## SSL configuration
    ######################################################################
    # recommended but not manditory directive
    # leave commented out unless you know what it is doing
    #more_set_headers 'Strict-Transport-Security: max-age=15768000';
    ssl on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1h;
    ssl_protocols TLSv1.2 TLSv1.1;
    add_header Strict-Transport-Security "max-age=15768000" always;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
    ssl_certificate /var/www/clients/client2/web2/ssl/test3.ks03.ru-le.crt;
    ssl_certificate_key /var/www/clients/client2/web2/ssl/test3.ks03.ru-le.key;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены
    error_log /dev/null crit;
    access_log off;

    ######################################################################
    ## Errors send to apache2
    ######################################################################
    # у апача своих алиасов куча, а так же некоторая статика отдается
    # средствамси php, по этому все ошибки обрабатывать только apache2
    error_page 401 403 404 405 500 502 503 = @fallback;
    location @fallback {
    proxy_pass https://127.0.0.1:4443;
    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_set_header HTTPS YES;
    }

    ######################################################################
    ## Locations configuration
    ######################################################################
    #Отключаем логирование ошибок No such file or directory
    ## Disable .htaccess files

    location ~ /\.ht {
    deny all;

    access_log off;
    log_not_found off;
    }
    ##
    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }
    ##
    location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
    }
    ##
    ######################################################################
    # сервисы на сайте phpmyadmin почта и letxencrypt
    location /phpmyadmin/ {
    deny all;
    }
    ##
    location /webmail/ {
    rewrite ^/(.*)$ https://$http_host:8080/$1 permanent;
    }
    # letsencrypt
    location /.well-known/acme-challenge/ {
    alias /usr/local/ispconfig/interface/acme/;
    default_type text/plain;

    }
    # static content
    # Отдаем статику напрямую с nginx
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {
    root /var/www/test3.ks03.ru/web;
    access_log off;
    expires 30d;
    }

    # default location
    location / {
    index index.php index.html index.htm;
    proxy_pass https://127.0.0.1:4443;
    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_set_header HTTPS YES;
    proxy_set_header X-Forwarded-Proto https;
    include /etc/nginx/locations.d/*.conf;
    }
    ######################################################################
    ## Directives configuration
    ######################################################################

    }
    Ответ написан
    1 комментарий
  • Config apache + nginx для нагруженного проекта?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Это не нагруженный проект.
    2. Проверьте настройку серверного и клиентского кеширования (если оно у вас есть, конечно!)
    3. Проверьте запрет прохождения к скриптам невалидных запросов со стороны клиентов (чтобы снять нагрузку)
    4. Проверьте, что все операции работы с БД - лимитированы по количеству строк при выборке.
    Ответ написан
    Комментировать
  • Config apache + nginx для нагруженного проекта?

    @Fixid Куратор тега Linux
    Я щас скажу жуткую банальщину, но что бы "летало" надо отказаться от apache2(в большинстве случаев). В небольших нормальных проектах обычно можно спокойно перейти на php-fpm.

    Опять же надо смотреть конфиги nginx/apache2, нагрузку в момент тормозов (LA, mem, cpu, cache, etc), состояние баз
    Просто так не подсказать.

    P.S. У вас чуть больше чем 1 пользователь в секунду, это очень маленькая нагрузка.
    Ответ написан
    2 комментария
  • Как использовать array_filter в функции (php)?

    Решение:
    $needle = "08_soluzione";
    
    //Собственно поиск
    $result = array_filter($out_data, function($innerArray) use ($needle) {
        //global $needle;
        //return in_array($needle, $innerArray);    //Поиск по всему массиву
        return ($innerArray[0] == $needle); //Поиск по первому значению
    });
    Ответ написан
    Комментировать
  • Как определить где цифровая линия?

    на этих АТС (кстати KX-TD1232) порты внутренних линий универсальные. смотреть надо начинать с самой АТС - на 6-ти штырьковые разъемы на плате, куда они вообще расшиты.
    Ответ написан
    2 комментария
  • Как привязать footer к низу экрана в Twitter Bootstrap?

    @RomeO_rzn
    Я решил через скрипт, на мой взгляд так проще и не нужно городить враперы и лишние стили, кроме того футер не болтается всё время на экране

    if ($(document).height() <= $(window).height())
    	$("footer.footer").addClass("navbar-fixed-bottom");
    
    Ответ написан
    4 комментария
  • Как теперь получить ссылку на mp3 при парсинге vk.com (Вконтакте)?

    @ImIeee
    Обновление.
    Выложил все файлы на Github — алгоритм шифровки, расшифровки, пример использования токена. Здесь будет только последняя версия кода расшифровки на PHP, в соответствии с вопросом.
    Обновление 2.
    Создал репозиторий с кодом получение токена VK, подходящего для Audio API, по GMS ID и GMS токену.
    Обновление 23.11.17
    Теперь адрес аудиозаписи, похоже, привязан к идентификатору пользователя ВКонтакте. Нужно указать его в коде.
    <?php
    
    define('VK_ID', ID_пользователя_в_виде_числа);
    
    function decode($str){
      $vals = explode("#", explode("?extra=", $str)[1]);
      $tstr = vk_o($vals[0]);
      $ops = vk_o($vals[1]);
      $ops_arr = explode(chr(9), $ops);
      $len = sizeof($ops_arr);
      for($i = $len - 1; $i >= 0; $i--){
        $args_arr = explode(chr(11), $ops_arr[$i]);
        $op_ind = array_shift($args_arr);
        switch($op_ind){
          case "v": $tstr = vk_v($tstr); break;
          case "r": $tstr = vk_r($tstr, $args_arr[0]); break;
          case "x": $tstr = vk_x($tstr, $args_arr[0]); break;
          case "s": $tstr = vk_s($tstr, $args_arr[0]); break;
          case "i": $tstr = vk_i($tstr, $args_arr[0]); break;
        }
      }
      return $tstr;
    }
    
    $vk_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=";
    
    function vk_o($str){
      global $vk_str;
      $len = strlen($str);
      $result = "";
      for($s = 0, $index2 = 0; $s < $len; $s++){
        $sym_index = strpos($vk_str, $str[$s]);
        if($sym_index !== false){
          $i = (($index2 % 4) !== 0) ? ( ($i<<6) + $sym_index) : $sym_index;
          if(($index2%4) != 0){
            $index2++;
            $shift = -2 * $index2 & 6;
            $result .= chr(0xFF & ($i >> $shift));
          } else {
            $index2++;
          }
        }
      }
      return $result;
    }
    
    function vk_s($str, $start){
      $len = strlen($str);
      if($len > 0){
        $cur = abs($start);
        $shuffle_pos = array();
        for($i = $len - 1; $i >= 0; $i--){
          $cur = (($len * ($i + 1)) ^ $cur + $i) % $len;
          $shuffle_pos[$i] = $cur;
        }
        for($i = 1; $i < $len; $i++){
          $offset = $shuffle_pos[$len - $i - 1];
          $prev = $str[$i];
          $str[$i] = $str[$offset];
          $str[$offset] = $prev;
        }
      }
      return $str;
    }
    
    function vk_i($str, $i){
      return vk_s($str, $i ^ (int) VK_ID);
    }
    
    function vk_v($str){
      return strrev($str);
    }
    
    function vk_r($str, $i){
      global $vk_str;
      $vk_str2 = $vk_str . $vk_str;
      $vk_str2_len = strlen($vk_str2);
      $len = strlen($str);
      $result = "";
      for($s = 0; $s < $len; $s++){
        $index = strpos($vk_str2, $str[$s]);
        if($index !== false){
          $offset = ($index - $i);
          if($offset < 0){
            $offset += $vk_str2_len;
          }
          $result .= $vk_str2[$offset];
        } else {
          $result .= $str[$s];
        }
      }
      return $result;
    }
    
    function vk_x($str, $i){
      $xor_val = ord($i[0]);
      $str_len = strlen($str);
      $result = "";
      for($i = 0; $i < $str_len; $i++){
        $result .= chr(ord($str[$i]) ^ $xor_val);
      }
      return $result;
    }
    
    echo decode($argv[1]);
    ?>
    Ответ написан
    93 комментария
  • Как сделать raid 1 без потери данных?

    @liks
    RAID ≠ BackUp
    Но raid всё равно нужен, проще всего сделать программный через diskmgmt там есть функция зеркалирования. Если один из дисков выходит из строя подкидываете вместо него такой-же и всё нормально.
    Ответ написан
    Комментировать
  • Как сделать raid 1 без потери данных?

    Jump
    @Jump
    Системный администратор со стажем.
    Бекап ни куда не осуществляется. В связи с этим опасаюсь, что выйдет из стоя жесткий диск и придется прощаться со всеми базами и т.д.
    В таком случае вам надо срочно настроить бэкап.
    RAID1 тут ничем не поможет, он никак не защищает от потери данных.
    Ответ написан
    8 комментариев
  • Yii2, как сделать загрузку изображения (аватара пользователя) в дефолтной модели User?

    @yazux Автор вопроса
    В общем проблема решилась использованием стороннего плагина для загрузки изображений с помощью ajax, вот собственно ссылка на плагин, там же есть live demo и ссылка на проект на github. Сделал работу так: на форме есть , с помощью плагина валидирую и загружаю изображение на сервер, при успешной загрузке, js заносит в инпут путь к загруженному изображению, а далее всё стандартными средствами Yii2, форма работающая на pjax отправляется, валидируется и данные, включая адрес изображения, пишутся в базу, profit! Кто будет использовать данный метод, учитывайте то, что при загрузке нескольких изображений с одинаковыми именами, они друг друга заменят. По этому нужно хешировать названия перед загрузкой и в базу соответственно писать уже обновлённое имя. В моём случае перед хешированием к имени изображения добавляется ник пользователя т.к. он уникален, то и имя изображения генерируется уникальное.
    Ответ написан
    Комментировать
  • Какой купить процессор для ноутбука?

    stasuss
    @stasuss
    быдлокодер со стажем
    да серия пентиумов мобильных не плохо себя показывает таки. в списке интересов нет ничего такого что требовало бы что то типа i5.
    Ответ написан
    Комментировать
  • Ошибка при упаковке расширения Opera

    pepelsbey
    @pepelsbey
    Пепелсбей в HTML Academy
    Опишите пошагово, как вы создаёте расширение. Суть проблемы в каталоге в том, что система не может найти файл manifest.json, а не в том, что он неправильный. Причины могут быть две:

    — Вы вручную упаковываете в архив папку с расширением, а не список файлов в этой папке (не должно быть вложенности)
    — Вы упаковываете расширение через браузер, используя кириллические системные пути, например: Рабочий стол\myExtension\…, из-за этого архив может получиться битым (баг известный, есть даже в Хроме, мы его исправили, но пока не выпустили).

    Решение: положите папку с расширением так: C:\myExtension\… и укажите эту папку в браузером упаковщике расширений.
    Ответ написан
    1 комментарий