Задать вопрос
  • Есть ли способ улучшить соединение ADSL?

    @alexalexes
    На ADSL не так много вариантов что можно сделать самому с оборудованием, чтобы понять, где проблема:
    1. Заменить роутер на другой. Чтобы не сильно тратиться, можно взять в компьютерном комиссионном магазине, либо на avito. Благо ADSL роутеры сейчас могут отдать почти даром: 200...1000 руб. Если роутер был у человека, который перешел с ADSL на оптику, то вероятно, что роутер жив чем мертв.
    На роутере могут со временем приходить в негодность входной трансформатор для гальванической развязки, что может понижать параметр сигнал/шум. Если заменить роутер, то может попасться более исправный экземпляр.
    2. Заменить сплиттер - коробочка-разветвитель телефон-роутер. Либо избавиться от нее, если телефона нет на линии.
    3. Заменить телефонный кабель от жилья, до места, где подключается к щитку провайдера, избавиться от скруток (в городских условиях это будет щиток в подъезде или на чердаке, в сельских - коробочка на телефонном столбе).
    По идее, это должен делать работник от провайдера. Но если у вас сложно проложен кабель в доме и на прилегающей территории, то часть работ придется делать своими силами.
    Ответ написан
    Комментировать
  • На чем дешево и долго хранить десятки Тб информации сейчас?

    @alexalexes
    Я думаю, 10 дисков с технологией записи CMR и без гелиевого наполнения по 8 Тбайт, запертые в сейфе в негорючем помещении с постоянным микроклиматом, будут куда дешевле и проще в эксплуатации, и пролежат 15 лет. Чем возиться с ленточным накопителем и лентами.
    Ответ написан
    Комментировать
  • Почему при использовании substr в php, если в тексте есть символ точки, то он считает не корректно?

    @alexalexes
    "ДокРу00001.Р1"

    Вероятно, у вас эта строка не в однобайтовой кодировке (скорее всего в utf8 работаете).
    Для таких строк нужно использовать набор функций для строк в многобайтовых кодировках, в данном случае вам нужна функция mb_substr вместо substr, иначе результат работы функций для однобайтовых кодировок в строках с многобайтовыми - не предсказуем.

    PS: не забудьте включить расширение mb_string в конфиге php сервера.
    Ответ написан
  • Очень-очень много фотографий в одной папке - это вредно для диска?

    @alexalexes
    1. Я бы такой каталог убрал из личного каталога пользователя системы, так как многие элементы интерфейса системы любят интерактивно проецировать состояние таких каталогов в корне проводника, Меню пуск и Рабочего стола (это каталоги Музыка, Загрузки, Изображения и т.д.). Это проецирование может быть ресурсоемким.
    2. Настроить просмотр файлов проводника Windows для этого каталога только в виде списка, без отображения миниатюр. Поэкспериментировать с настройкой кеширования миниатюр изображения. Это поможет снизить нагрузку при навигации.
    3. Использовать для навигации не проводник Windows, а программу-галерею. Например, ACDSee, XnView.
    4. Для копирования и переноса файлов - файловые менеджеры, которые не лезут в содержимое файла без необходимости (если не установлены плагины) - Total Commander, Far Manager.
    Ответ написан
    Комментировать
  • Как сделать реализацию чата как в мессенджерах?

    @alexalexes
    что должно происходить при отправке первого сообщения пользователем А пользователю B?

    До отправки сообщения на клиенте держится в памяти заготовка комнаты.
    После отправки сообщения сервер оповещает все экземпляры клиента пользователей A и B, что создал комнату между A и В (A и B могут открыть несколько экземпляров программ под своими логинами).
    Если экземпляры клиентов открывали заготовку комнаты у себя, которая по врЕменным параметрам участников соответствует реальной комнате A и В, то эти экземпляры клиентов синхронизируют свое состояние с тем, что прислал сервер, то есть делают отображение комнат реальным.
    Ответ написан
    Комментировать
  • Как узнать процент похожести текста?

    @alexalexes
    Самое простое - натравить поисковик на собственный ресурс запросом:
    "site:yousite.ru фрагмент фразы".

    PS: Сайт на момент запроса должен быть проиндексирован поисковиком.
    Ответ написан
    Комментировать
  • Можно ли написать SQL запрос с выражением в WHERE и в SELECT, но без повторения этого выражения и без вложенного SELECT?

    @alexalexes
    Но будет 2 вычисления MD5

    Выражения в select вычисляются после того, как отобраны строки по условиям в where.
    Если выходная выборка совсем небольшая, то оптимизировать работу функции в колонках не нужно - это экономия на спичках.
    Другое дело, если вы используете вычисляемую функцию в where. Чтобы она быстро работала есть 3 пути:
    1. Если функция вычисляется из данных, которые не зависят от контекста запроса, то нужно отказаться от этой функции, которая вычисляется при каждом запросе. Нужно хранить ее результат в отдельном атрибуте.
    2. Сделать индекс с использованием этой функции на атрибуте, тогда при использовании этой же функции в where сработает индекс.
    3. Если есть возможность, то нужно так преобразовать выражение where, чтобы все аргументы вычисляемой функции или выражения (складываем, вычитаем, умножаем делим, case-им) оказались входными параметрами или константами. Чтобы такое произошло, нужна обратная функция для md5 - reverse_md5. Но такой функции по математическим соображениям не существует.
    Иначе выражение бы выглядело так:
    where value = reverse_md5(:hache)
    Ответ написан
    1 комментарий
  • Как получить имя файла из zip архива, который содержит кириллицу?

    @alexalexes Автор вопроса
    Имя файла, получаемое при работе с модулем ZipArchive, из-за бага в этом модуле требует некоторого преобразования через промежуточные однобайтовые кодировки.
    Нужно провести такую цепочку преобразований:
    UTF-8 -> encode1 -> encode2 (encode3) -> UTF-8
    В php это будет так:
    $out_str = iconv('UTF-8', $encode1.'//IGNORE', $in_str);
    $out_str = iconv($encode1, $encode2.'//IGNORE', $out_str);
    $out_str = iconv($encode3, 'UTF-8//IGNORE', $out_str);

    Но проблема в том, что для каждой конфигурации сервера эти кодировки могут отличаться.
    Чтобы их найти нужно воспользоваться методом перебора.
    Для начала найдем все кодировки, которые поддерживает функция iconv.
    Для этого в консоли сервера вызовем:
    $ iconv -l
    Из набора кодировок нужно взять только те, которые содержат наименование "CPxxx", где xxx - число.
    С помощью скрипта провести полный перебор:
    $all_encoding = []; // сюда вставляем список всех кодировок iconv
    $out_encoding = array_filter($all_encodings, function($item){return strpos(strtolower($item), 'cp') !== false;});
      foreach($out_encoding as $encode1)
      {
        foreach($out_encoding as $encode2)
        {
          foreach($out_encoding as $encode3)
          {
              $str = iconv('UTF-8', $encode1.'//IGNORE', $out);
              $str = iconv($encode1, $encode2.'//IGNORE', $str);
              $str = iconv($encode3, 'UTF-8//IGNORE', $str);
              if($str !== false && $str !== '')
                echo $encode1.'::'.$encode2.'::'.$encode3.'::'.$str.'<br>';
          }
        }
      }

    Визуально ищем тот вариант, где имя файла восстановилось.
    В моем случае это:
    UTF-8 -> cp437 -> cp437 (cp866) -> UTF-8
    В коде это выглядит так:
    $out_str = iconv('UTF8', 'CP437//IGNORE', $in_str);
    $out_str = iconv('CP437', 'CP437//IGNORE', $out_str);
    $out_str = iconv('CP866', 'UTF8//IGNORE', $out_str);
    Ответ написан
    Комментировать
  • Какой отрезок содержит в себе больше целочисленных значений?

    @alexalexes
    Будьте внимательны, почему вы левую часть считаете в меньшую сторону, если там интервальная скобка ( ?
    (11;20] - с 12 по 20 - итого 9.
    (21;31) - с 22 по 30 - итого 9.
    И в итоге вариант [32;41] - он больше всех.
    Ответ написан
    6 комментариев
  • Браузер блокирует скачиваение с сайта нескольких файлов подряд. Как предупредить пользователей?

    @alexalexes
    Если следовать логике загрузки файлов из github (получить весь репозиторий) или любого файлового облака (получить весь каталог с файлами), то когда речь заходит о скачивании набора файлов, то этот набор лучше упаковать в архив и отдать клиенту отдельным файлом. Тогда вы не столкнетесь с ограничениями браузера.
    Ответ написан
    2 комментария
  • Могут ли USB хабы убить компьютер?

    @alexalexes
    USB хаб - самый неустойчивый узел.
    Как по производительности - он будет бутылочным горлышком, если к нему подключать высокоскоростные устройства. Так может подвести по питанию. Даже если по характеристикам потребляемого тока подключенных устройств хаб укладывается в лимиты, может оказаться сюрпризом то, что не хватает сечения жил основного провода для поддержания нужного уровня тока, либо идут большие потери на нагрев внутренней схемы хаба, или банально плохой контакт в соединении. Для стабилизации работы хаба в некоторых случаях требуется отдельное внешнее питание.
    Опасности нет, просто если хаб не вывозит, он просто будет работать нестабильно, а подключенные устройства будут либо на дежурном режиме работать, либо пытаться в бесконечном цикле запрашивать разрешение кушать тока по больше, но не получать его.
    Ответ написан
    Комментировать
  • Менял для программы значение кнопки "." на кнопку "Num 2" тк у меня нету нампада на клаве. Как вернуть значение клавиши?

    @alexalexes
    Вероятно, у вас ноутбук с компактной клавиатурой.
    Некоторые производители ноутбуков на таких клавах закладывают функционал numpad на клавишах правой части клавиатуры с их активацией через кнопку Fn. Такие клавиши имеют дополнительное цветовое обозначение, тем же цветом, что и функциональные клавиши.
    Проблема возникает, что Fn режим может быть включен по умолчанию, и тогда правая часть клавиатуры работает как numpad.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы мигание можно было воспроизводить несколько раз?

    @alexalexes
    1. Сначала занулите свойство анимации. Потом вызовите setTimeout с нулевым временем, чтобы JS применил изменения анимации в DOM и внутри setTimeout добавьте свойство анимации. Тогда анимация перезапустится.
    nickinput.style.animation = "none";
      setTimeout(function() {
        if (validmail === false) {
            mailinput.style.animation = "blinker 0.6s linear 3";
        }
        }, 0);

    2. Задайте какой-нибудь color в ключевом кадре:
    @keyframes blinker {
      50% {
        background-color: #b11515;
        color: #aaa;
      }
    }
    Ответ написан
    3 комментария
  • Как сделать кастомные пагинации?

    @alexalexes
    Никогда не копался во внутренностях вордпресса.
    Но в вашем примере есть фрагменты, которые помогут собрать то, что вы хотите.
    1. Вам нужна некая функция, которая будет получать href относительно текущего раздела, чтобы перейти на другую страницу этого же раздела. В которую мы будем передавать номер страницы, а получать на выходе url.
    Вероятно, это оно:
    esc_url( get_pagenum_link( 999999999 ))
    2. Нам нужно получить текущий номер, страницы.
    Наверное, это оно:
    max( 1, get_query_var( 'paged' ) )
    3. Нам нужно получить общее число страниц, наверное так:
    $query->max_num_pages
    4. Кроме чисел, нам нужно адаптивно выключать ссылки, когда следующей страницы нет (ссылка Next), и когда предыдущей страницы нет (ссылка Prev, вы как раз показали этот случай 1/3Next). Эти ситуации обрабатываются путем сравнения текущего номера страницы с единицей или макс. номером страницы.
    Резюмируя эти предположения, можно получить вот такой код для генерации блока pagination:
    $curent_page = max(1, get_query_var( 'paged' )); // текущий номер страницы
    $max_page_num = $query->max_num_pages; // общее количество страниц
    $prev_page_num =  $curent_page - 1 > 0 ? $curent_page  - 1 : null; // номер следующей страницы, если ее нет, то null
    $next_page_num = $curent_page + 1 < $max_page_num ? $curent_page + 1 : null;  //номер предыдущей страницы, если ее нет, то null
    $prev_page_link = is_null($prev_page_num) ? null : esc_url( get_pagenum_link($prev_page_num));  //ссылка на следующую страницу, если ее нет, то null
    $next_page_link = is_null($next_page_num) ? null : esc_url( get_pagenum_link($next_page_num)); //ссылка на предыдущую страницу, если ее нет, то null
    echo '<div class="pagination">'
    .(is_null($prev_page_num) ? '' : '<a href="'.$prev_page_link .'">Prev</a> ')
    .$curent_page.'/'.$max_page_num
    .(is_null($next_page_num) ? '' : '<a href="'.$next_page_link .'">Next</a> ')
    .'</div>';
    Ответ написан
  • Зачем вложенные "namespace"?

    @alexalexes
    Потому, что класс user (с достаточно неуникальным именем) может реализован еще в каком-нибудь стороннем компоненте.
    Чтобы при подключении этого компонента, вы могли использовать одноименный класс user как из своего компонента, так и из стороннего.
    Ответ написан
  • Почему не вносятся изменения в БД?

    @alexalexes
    1. Нужно использовать подготовленные запросы, а не делать по старинке через mysqli_real_escape_string.
    2. Если вы текстом написали запрос update, он еще не начнет выполнятся, где-то нужно запустить execute.
    if(isset($_POST['ref_button']) )
    {
        $send_ref = $_POST["send_ref"];    
        $stmt = msqli_prepare($con, "SELECT * FROM usertable WHERE referral= ?");
        mysqli_stmt_bind_param($stmt, 's', $send_ref);  // s - тип данных строка, i - число, если не тот тип данных - нужно исправить
        $result = mysqli_stmt_execute($stmt);
        if(mysqli_num_rows($result) > 0)
        {
            $stmt = msqli_prepare($con, "UPDATE usertable SET owner = ? WHERE email = ?");
            mysqli_stmt_bind_param($stmt, 'ss', $send_ref, $email); // s - тип данных строка, i - число, если не тот тип данных - нужно исправить
            $result = mysqli_stmt_execute($stmt);
        }
    }
    Ответ написан
    Комментировать
  • При каких знаниях первого яп можно начинать изучение второго?

    @alexalexes
    Пока не начнете делать проект, решающий какую-то насущную потребность (вашу - без денежного вознаграждения, или чужую - за денежное вознаграждение), можете всю жизнь просто интересоваться хоть одним языком программирования, хоть несколькими.
    Запомните, пока вы вне таких проектов что-то делаете, вы просто интересуетесь инструментарием, вы ничего не учите.
    Ответ написан
    Комментировать
  • Почему sql запрос не определяет имя таблицы, если записывать имя через prepare?

    @alexalexes
    1. В качестве входных параметров никогда не использовались имена таблиц в подготовленных запросах - это попытка забивать микроскопом гвозди.
    2. Метки для входных параметров - это не тип данных, это просто название места куда будет подставлено значение этой метки по ключу из массива значений.
    Причем, именованные метки нужно связывать со значением с помощью специальной функции:
    $stmt = $db->prepare("SELECT * FROM moya_tablitsa WHERE id = :metka_parametra_identifikatora");
    $stmt->bindParam(':metka_parametra_identifikatora', 123);
    $stmt->execute();

    Но можно не использовать именованные метки (если их несколько в запросе, то нужно вставлять значения по порядку)
    $stmt = $db->prepare("SELECT * FROM moya_tablitsa WHERE id = ?");
    $stmt->execute([123]);

    Можно использовать связывающую функцию, указав порядок метки.
    $stmt = $db->prepare("SELECT * FROM moya_tablitsa WHERE id = ?");
    $stmt->bindParam(1, 123); // 1 - это номер метки, 123 - значение параметра
    $stmt->execute();
    Ответ написан
    Комментировать
  • Внешний винт LaCie сломан USB-C разъем, поможет ли донор?

    @alexalexes
    1. Старый Usb-3 адаптер может не мочь перекодировать команды Sata больше 1Tb емкости. Будет либо видеть первые 700 с лишним Гб, если диск не форматировался раньше, либо считать поврежденным раздел, так как не может транслировать всю емкость диска.
    2. Если диск подключить напрямую по Sata и не в древнюю мать, и использовать либо Linux систему, либо дисковую утилиту, например, Paragon Disk Manager, то все прекрасно прочитается.
    3. Если у Type-C разъема отошла только пайка, а он сам целый, то его починит любой умелец с маломощным паяльником или паяльным феном.
    Ответ написан
    1 комментарий
  • Есть ли бесплатное API для получения всех улиц и домов конкретного города?

    @alexalexes
    https://fias.nalog.ru/Updates
    Тут есть полный архив адресов и разностные файлы на определенную дату.
    Ответ написан
    Комментировать