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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Можно ли сделать интерфейс адаптивным, не переписывая весь CSS через media query's?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Обычно нет других вариантов. Если верстка гавно (в эту категорию входит верстка с использованием пикселей), то придется все переопределять в медиазапросах.

    Но даже если размеры задаются в rem, то не всегда достаточно прописать только font-size для :root. Всё же приходится кое-что переопределять, хотя и значительно меньше.
    Ответ написан
  • Как убрать проверку на содержимое?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    this.textContent = this.textContent != "2" ? "2" : "1";
    Ответ написан
    4 комментария
  • Почему не роботает Slick?

    irtek
    @irtek
    Wordpress-addicted
    Так у вас опечатка. Вместо "type" "src" должно же быть в третьей строке, где подгружаете main.js
    У вас код запуска слайдера не грузится.

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
    <script src="js/slick.min.js"></script>
    <script src="js/main.js"></script>
    Ответ написан
    1 комментарий
  • Можно ли сделать дамп MySQL БД из консоли Linux, исключив из него определенные поля определенных таблиц?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://dba.stackexchange.com/questions/34887/mysq...

    советы примерно следующие:
    * сделать выборку по полям и сдампить в Csv
    * сделать выборку во временную таблицу и уже ее дампить
    Ответ написан
    5 комментариев
  • Как в php сравнить два огромных txt файла до 100гб, удалив дубликаты?

    2ord
    @2ord
    На POSIX системах можно использовать fgrep:
    $ cat /tmp/file1.txt
    aaa
    bbb
    ccc
    $ cat /tmp/file2.txt
    bbb
    123
    aaa
    $ fgrep -f /tmp/file1.txt /tmp/file2.txt
    bbb
    aaa


    Так что на PHP как-то так:
    $output = shell_exec('fgrep -f /tmp/file1.txt /tmp/file2.txt > /tmp/dups.txt');


    Однако, если требуется выполнять какие-то дополнительные манипуляции, тогда, возможно, лучше сразу импортировать в СУБД.

    Добавлено:
    упустил факт, что помимо дубликатов нужно оставить и неповторяющиеся значения. Тогда так:

    $ sort -u /tmp/file1.txt /tmp/file2.txt
    123
    aaa
    bbb
    ccc


    $output = shell_exec('sort -u /tmp/file1.txt /tmp/file2.txt > /tmp/dups.txt');
    Ответ написан
    Комментировать
  • Почему у меня получается объект с неверными ключами?

    Dier_Sergio_Great
    @Dier_Sergio_Great
    Увлеченный человек
    А почему Вы не использовали объект new FormData(form) ?
    https://learn.javascript.ru/formdata
    Ответ написан
    1 комментарий
  • Как вставить картинку по клику?

    Tim-A-2020
    @Tim-A-2020
    Ответ написан
    Комментировать
  • Как найти сумму чисел в двумерном массиве(нахождение суммы массива)?

    Tim-A-2020
    @Tim-A-2020
    let b =[
      [],
      [2, 0],
      [1, 0, 0, 0],
      [1, 1, 1, 1, 1, 1],
      [1, 2]
    ]
    
    b.flat().reduce((acc,item) => acc + item, 0); //12
    Ответ написан
    Комментировать
  • Почему после добавления нового блока слетают события со всех остальных?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    После этого и срабатывает этот блок success. где отрисовывается новый блок.

    document.getElementById('client-personal-note-container').innerHTML += appendNotemakrup;

    Нет, это НЕ добавление нового элемента.
    Это чтение разметки КАК СТРОКИ, добавление к этой СТРОКЕ новой СТРОКИ и потом преобразование под капотом в DOM элементы. Понимаете?

    То есть все элементы что у Вас были - умирают и заменяются НОВЫМИ. Без добавленных на них ранее обработчиков.

    Как исправить?
    Основных пути 2:
    1) Научиться именно добавлять элементы https://learn.javascript.ru/modifying-document
    2) Освоить делигирование событий https://learn.javascript.ru/event-delegation
    Ответ написан
    1 комментарий
  • Почему if/else работает некорректно при получении xhr.response?

    @Bolharskyi Автор вопроса
    Проблема была в том, что значение xhr.response приходило с пробелами. Очистил его в JS методом trim(). Всем спасибо за участие.
    Ответ написан
    Комментировать
  • (Решено) После разгона оперативы по XMP пк перезагружается и виснет. Как исправить?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    не гнать, это же очевидно
    что ты там собрался выиграть??? )))
    +1-2 кадра, -стабилность всей системы
    это не то железо, которое можно гнать,
    тут "загнали по максималкам"ещё при производстве ))
    Ответ написан
    Комментировать
  • Как убрать ссылку с элемента, если он внутри тега а?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    1 - Нужно семантически верно сверстать блоки и не будет таких проблем - внутри ссылки не должно быть каких-то интерактивных элементов
    2 - Проверил preventDeafault всё отработало

    63c9bbf8156a9939995020.jpeg
    Ответ написан
    Комментировать
  • Как сделать перенаправление все запросов на Index.php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    в том что в документ рут не должно быть папок типа /backend/news/
    Ответ написан
    4 комментария
  • Как перевести дату в секунды если доступен только год?

    @alexalexes
    Вариант 1.
    1. Определите, что у вас - полная дата, или только год.
    2. Если только год, то приклейте 1 января.
    3. Конвертируйте в отметку Unix time как обычно.
    4. Если дата с фрагментом 1 января, то считаем, что известен был только год, выводим только год.

    Вариант 2.
    1. Определите, что у вас - полная дата, или только год. Результат сохраняем во временную переменную 1 - полная дата, 2 - только год.
    2. Если только год, то приклейте 1 января.
    3. Конвертируйте в отметку Unix time как обычно.
    4. Сохраните и отметку времени и результат выполнения шага 1 в отдельном поле (полная дата, или только год).
    5. Если полная дата, то конвертируем отметку времени в строковое представление, и берем всю строку. Если только год, то тоже конвертируем, но выводим только год.
    Ответ написан
    5 комментариев
  • Как сделать задание cron?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    обычно если пых установлен, достаточно просто php /var/www/имя/data/www/сайт/cron.php, если не видит пхп - запускаете whereis php, смотрите где оно и указываете полный путь.
    Ответ написан
    Комментировать
  • Phpstorm: для чего существует возможность исключения (exclude) папок?

    vfreelancer
    @vfreelancer
    php
    видимо, чтобы индексацию отключить и не отслеживать файлы в папке. то есть будет работать быстрее
    Ответ написан
    Комментировать
  • Что лучше, по одной или несколько записей при INSERT?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Запись пакетом быстрее и менее нагрузочна, но выше вероятность потери при сбоях.

    PS. 40 записей в секунду - это в общем-то ни о чём..
    Ответ написан
    Комментировать
  • Что за формат Iterator?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    что за формат такой Iterator и как с ним взаимодействовать?

    итерироваться

    $iterator = $reader->fetchColumnByName('title');
    foreach($iterator  as $item) {
         var_dump($item);
    }


    А это первая ссылка в гугле по запросу iterator php
    https://www.php.net/manual/ru/class.iterator.php

    По второму вопросу — походу не найдена такая колонка в хедере
    Вот код, который кидает его:
    https://github.com/thephpleague/csv/blob/4b5d1df71...

    прдебажьте
    Ответ написан
    Комментировать
  • Что лучше: больше полей или больше Join?

    @alexalexes
    Куча count - возможно, но не join-ов.
    SELECT 
        posts.id, 
        posts.name, 
        count(case when s_vk.social_name = 'vk' then 1 end) as count_vk, 
        count(case when s_vk.social_name = 'tg' then 1 end) as count_tg,
        count(case when s_vk.social_name = 'ok' then 1 end) as count_ok,
        count(case when s_vk.social_name = 'tw' then 1 end) as count_tw
    FROM posts
       LEFT JOIN socials as s_vk on s_vk.post_id = posts.id 
    GROUP BY posts.id, posts.name

    В вашем случае для ускорения не подходит ни то, ни другое.
    Нужно вести отдельную таблицу в качестве кеша с аналогичными полями:
    posts_id,
    count_vk,
    count_tg,
    count_ok,
    count_tw
    При возникновении события клика на соц. сеть - добавлять запись в socials, а также триггером плюсовать значение по полю кеш-таблицы (и предварительно создавать запись в этой таблице по post_id, если не было ранее событий).
    Для необходимости сброса кеша нужно сделать хранимую процедуру для его перегенерации на основе данного запроса.
    PS:
    Еще бы разбить таблицу socials - на справочник соц. сетей:
    id - идент. соц сети.
    full_name - полное название соц. сети,
    abbrev - аббревиатура, например, ОК, ВК и т.д.
    tag_name - тех. название, например, ok, vk и т.д.
    ... - другие параметры соц. сети

    И таблицу для фиксации кликов:
    soc_click_events
    id - идент. события,
    post_id - идент. поста,
    social_id - идент. соц. сети,
    event_date - дата и время клика,
    ... - другие параметры клика

    PPS:
    В итоге, для фиксации событий клика и поддержания структуры базы в нормальной форме вы используйте три таблицы - posts, socials и soc_click_events.
    Для решения статистических задач вы делаете отдельные кеш-таблицы и обслуживаете их либо триггерами, либо хранимыми функциями и процедурами, получая статистические данные из первичной структуры.
    Ответ написан
    1 комментарий