• Почему Windows-юзеры обычно держат окна приложений развёрнутыми на весь экран, а пользователи macOS — нет?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Потому что на макоси по другому работает рабочий стол и разворачивание на весь экран.
    И навигация по экранам идёт, а не переключение между активными окнами как на винде.
    Если на макоси развернуть на весь экран(по зеленой кнопке "разворачивания" окна), то работать с двумя окнами уже не получится например, развернутый софт всегда будет на своём экране без всего остального. Никаких окон поверх него нельзя разместить, только если рядом на половину экрана растянуть что-то другое.
    При этом есть второй режим это двойной клик в любом месте по шапке окна, тогда окно как раз развернется как в винде. Но я так и не смог осилить этот вариант т.к. навигация удобнее при использовании нескольких рабочих столов. И получается что режим как в винде вроде бы есть, а вроде бы он вообще здесь не к месту. Хотя иногда он помогает когда всё-таки надо использовать несколько связанных окон(например Chrome + Developer Tools отдельным окном при разработке расширения для хрома это вообще единственный возможный вариант работы).

    Так что просто по разному работает. Причем в винде это местами удобнее чем на маке, но на маке свои плюсы есть.
    Ответ написан
    5 комментариев
  • Как реализовать такое в роутинге?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Совершенно не представляю как реализовать такое:

    как повезло что это опенсорс и можно посмотреть исходники:
    https://github.com/laravel/framework/blob/5.8/src/...
    Ответ написан
    Комментировать
  • $_SERVER Как удалить в адрессе ссылке все после знака вопроса?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    list($url) = explode('?', $_SERVER['HTTP_REFERER']);
    $url = str_replace('https://', '', $url);
    Ответ написан
    Комментировать
  • В каких форматах должны работать страницы по PaymentAvisoURL и CheckURL?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Комментировать
  • Как задать неизвестный текст в команде бота для Телеграм?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Надо разделять понятие команда и аргументы, иначе ни к чему нормальному не придёте.
    Ответ написан
    Комментировать
  • Можно ли как то понять что запрос пришёл со своего клиента?

    Sanasol
    @Sanasol Куратор тега Веб-разработка
    нельзя просто так взять и загуглить ошибку
    Если речь про использование вашей авторизации где-то на чужом сайте, то нельзя.

    В приложении которое создаётся в VK например вы прописываете домены на которые может быть переадресован пользователь. В других соц. сетях аналогично.
    Т.е. эта скопированная ссылка никому ничего не даст.
    Ответ написан
    Комментировать
  • Как вынести часть js из основного потока?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    На метрику точно забейте.

    Ютуб надо убирать под JS, вместо плеера картинка -> при клике вставляется плеер.
    Ютуб безобразно долго грузится.

    Живосайт не факт что так сильно влияет, но можно сделать финт ушами

    setTimeout(function(){
    (function(){ var widget_id = '***';var d=document;var w=window;function l(){
      var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true;
      s.src = '//code.jivosite.com/script/widget/'+widget_id
        ; var ss = document.getElementsByTagName('script')[0]; ss.parentNode.insertBefore(s, ss);}
      if(d.readyState=='complete'){l();}else{if(w.attachEvent){w.attachEvent('onload',l);}
      else{w.addEventListener('load',l,false);}}})();
    }, 3000);


    В целом вся оптимизация вордпресса это:
    1. Прогнать картинки через https://compressor.io/
    2. И поставить какой-нибудь W3 Total Cache + включить всякие минификации и т.д.
    3. Всякие виджеты засунуть в setTimeout

    На выходе получите 90-100 для десктопа и 80-100 для мобильного на PageSpeed
    Ответ написан
    4 комментария
  • Как найти вирус, который пересоздаёт удалённые файлы?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Шаг 1: Ставим Wordfence — сканируем файлы, все что заражено очищаем.

    Чистим руками все что видим сами и через Wordfence.

    Wordfence игнорирует вирусные файлы которые лежат например в корне сайта и не являются стандартными для WP.

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

    Поэтому проверяем сами вручную все папки стандартные на наличие аномалий. Вычищаем.



    Шаг 2: Ждём какое-то время.

    Если вирусня не появляется — значит все почистили хорошо.

    Если появляется значит возвращаемся к Шагу 1. Чистим заново еще тщательнее.



    Шаг 3: Снова ждём.

    Если ничего нет — профит.

    Если есть — начинаем подозревать плагины.

    Тут уже подробнее особо не расписать, все индивидуально.

    Пытаемся узнать какой плагин нас подставил, затем лечим или убиваем его.

    sanasol.ws/2016/10/13/wordpress-%D0%B1%D0%B5%D0%B7...
    Ответ написан
  • Какие области в веб - разработке осваивать в перспективе?

    Sanasol
    @Sanasol Куратор тега Веб-разработка
    нельзя просто так взять и загуглить ошибку
    В перспективе достаточно выучить/понять любой язык нормально. Т.е. понимать вообще что есть программирование и такие вещи как переменная/цикл/функция/условные операторы. Это всё везде одно и тоже, только под разным соусом.

    Все остальные будут учиться за пару открытий документации чтобы посмотреть синтаксис.

    Определитесь что больше нравится и выберите бекенд язык какой-нибудь.
    JS при любом раскладе надо уметь. (а еще html/css кудаж без них)

    И тогда будет обычный фулстек на выходе.

    js/php/html
    js/python/html
    js/ruby/html
    js/что угодно/html

    Вы сможете решать все задачи связанные с вебом.

    И учить фреймворки будет легче, потому что "учить" там ничего не надо.
    Достаточно уметь гуглить и понять основные принципы работы каждого из них.
    А язык-то там все равно JS/php/python.

    Сначала нужно выучить основы JS, а только потом уже разбираться с фреймворками

    Так и есть, иначе будете задавать вопросы из разряда:
    "как на jquery сложить два числа"
    "как на laravel сделать цикл"
    и т.д.
    Даже не понимая что ваш_фреймворк_нейм здесь вообще не причем, и делается это на языке JS/php/python, а не на jquery/laravel/django/ruby on rails. (это же относится и к CMS Wordpress, MODX, Битрикс, OpenCart.)

    В общем у меня уйдёт на это 2 - 2.5 месяца

    Нет, учиться вы будете не останавливаясь постоянно.

    Jquery не знаю, и есть ли смысл его сейчас учить когда существует Vue.js, и подобные ему фреймворки.

    это просто набор функций, и там учить ничего не надо, надо ссылку на документацию запомнить максимум.

    и где больше перспектив?

    тут только ванга поможет.
    Ответ написан
    2 комментария
  • MySQL Select LIKE - где зарыт СКЕЛЕТ ???

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    ///// верно ли сверяю
    if($result_mode['vopros'] == "$searchData")


    конечно нет, если там будет "привет", а в запросе "прив"
    База-то результат найдет, а вы этой проверкой результат выбрасываете в помойку.

    PS весь код стоит выбросить в помойку.
    Ответ написан
    3 комментария
  • Как опубликовать приложение для Facebook/Instagram?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Вроде как для админов-разработчиков приложения можно использовать любые апи без аппрувов.
    И тестить соответственно их.

    Т.е. просто запрашиваете доступы и проверяете.
    Ответ написан
    2 комментария
  • Можно ли как-то упростить подсчет количества гласных в строке?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    const countVowels = str => Array.from(str)
      .filter(letter => 'aeiou'.includes(letter)).length;
    
    console.log(countVowels('abcdefghijklmnopqrstuvwxyz')); // 5
    console.log(countVowels('test')); // 1
    console.log(countVowels('ddd')); // 0


    function countVowels(subject) {
        return subject.match(/[aeiou]/gi).length;
    }


    const count = str => (str.match(/[aeiou]/gi) || []).length;


    https://stackoverflow.com/q/29450399/1603055
    Ответ написан
    1 комментарий
  • Возможно выбрать отдельно только 1, 4, 7, 10 итемы? и 3, 6, 9,12 также отдельно?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    https://stackoverflow.com/a/13691714/1603055
    :nth-child(3n) {
    // 3, 6 ,9, 12
    }


    https://stackoverflow.com/a/41986487/1603055
    :nth-child(3n - 2) {
      // 1 4 7 10
    }


    Ну уж в крайнем случае просто перечислить с запасом варианты любые совсем понятно как:
    :nth-child(1),
    :nth-child(4),
    :nth-child(7),
    :nth-child(10),
     {
      // 1 4 7 10
    }
    Ответ написан
    Комментировать
  • Какой смысл в теге html и head для стилей?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Эти теги стилизуют кто нить?

    А вы их на странице видите? Что вы там стилизовать хотите?
    html и head можно стилизовать, но нет никакого смысла, разве что сбросить "стандартные" стили(reset.css/normalize.css).

    htmlbook.ru/html/html
    Тег является контейнером, который заключает в себе все содержимое веб-страницы, включая теги и . Открывающий и закрывающий теги в документе необязательны, но хороший стиль диктует непременное их использование. Как правило, тег идет в документе вторым, после определения типа документа (Document Type Definition, DTD), устанавливаемого через элемент . Закрывающий тег должен всегда стоять в документе последним.


    htmlbook.ru/html/head
    Тег предназначен для хранения других элементов, цель которых — помочь браузеру в работе с данными. Также внутри контейнера находятся метатеги, которые используются для хранения информации предназначенной для браузеров и поисковых систем. Например, механизмы поисковых систем обращаются к метатегам для получения описания сайта, ключевых слов и других данных.
    Ответ написан
  • Как влияет resize производительность, если он используется несколько раз на странице?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    Как влияет <вставить любое событие> на производительность, если он используется несколько раз на странице?


    Подписка на событие ни на что не влияет.
    Там может быть и одна подписка, но вы при этом решите перестроить весь сайт допустим.
    Все зависит от того что вы там делаете в своих ресайзах.
    Так что замеряйте время работы вашего кода, если есть подозрения на тормоза и оптимизируйте если надо.

    1) Отслеживаю изменение ширины меню и изменяю классы, которые завязаны на одну переменную.

    Допустим это норм. Хотя может быть можно CSS обойтись.

    2) Отслеживаю высоту блоков под меню и изменяю их высоту в зависимости от изменения высоты окна.

    а это уже точно верстка и css media query
    Нет смысла вешать лишний JS туда где справляется CSS.

    И ангуляр здесь вообще не в тему. Какая разница что там у вас за фреймворк, все равно все упирается в ваш код.
    Ответ написан
  • Как сделать коробочную версию сайта?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    http://sanasol.ws/2017/06/22/%d0%ba%d0%be%d0%b3%d0...

    1. Если у вас действительно супер-пупер секретный алгоритмы которые никто не знает или может повторить.
    Использовать исключительно модель SaaS или производить вычисления через ваш сервер(но продукт всё равно будет стоять на сервере клиентов).

    2. Если никаких алгоритмов взлома гугла/пентагона/игил/телеграма там нет.
    Просто отдавать открытые исходники для работы.

    3. Если вы пишите очень плохой код и вам стыдно или хороший код, но вы жадный.
    Используйте SaaS.
    Технологии позволяют привязать домен клиента к вам, создать ему отдельное рабочее пространство(виртуалку/сервер) и всё что только придумать можно.
    Ответ написан
    Комментировать
  • Поддержание минимального свободного места на диске Linux?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    банальный find . -delete

    да, пару строк баша и в крон

    Удалять при достижении N% заполненности
    https://stackoverflow.com/a/5912404/1603055
    FILESYSTEM=/dev/sda1 # or whatever filesystem to monitor
    CAPACITY=95 # delete if FS is over 95% of usage 
    CACHEDIR=/home/user/lotsa_cache_files/
    
    # Proceed if filesystem capacity is over than the value of CAPACITY (using df POSIX syntax)
    # using [ instead of [[ for better error handling.
    if [ $(df -P $FILESYSTEM | awk '{ gsub("%",""); capacity = $5 }; END { print capacity }') -gt $CAPACITY ]
    then
        # lets do some secure removal (if $CACHEDIR is empty or is not a directory find will exit
        # with error which is quite safe for missruns.):
        find "$CACHEDIR" --maxdepth 1 --type f -exec rm -f {} \;
        # remove "maxdepth and type" if you want to do a recursive removal of files and dirs
        find "$CACHEDIR" -exec rm -f {} \;
    fi


    Удалять самые старые файлы
    https://superuser.com/a/1003638
    DIR=/tmp
    FREESPACE=1000000
    find $DIR -type f | xargs ls -1rt | while read f ; do
      if [ `df --output=avail $DIR | tail -1` -ge $FREESPACE ] ; then
        break
      fi
      # rm -f $f
    done


    Вместе там слепите как-нибудь сами уже
    Ответ написан
    2 комментария
  • Как сделать пагинацию при отношении многие ко многим?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    $user->companies()->paginate(10)

    А вообще, проще и понятнее не использовать отношение в данном случае. Смысла все равно не много.
    Просто App\Company::where('user_id', $user_id)->paginate(10);

    Каша какая-то получилась здесь, почему не просто where?
    withCount(['users' => function ($query) {
        $query->where('id', auth()->id());
    }])
    Ответ написан
    2 комментария
  • Роль индекса при создании связей?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    https://dev.mysql.com/doc/refman/5.5/en/create-tab...
    MySQL requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan. In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order. Such an index is created on the referencing table automatically if it does not exist. This index might be silently dropped later, if you create another index that can be used to enforce the foreign key constraint. index_name, if given, is used as described previously.

    При использовании внешних ключей индекс на поле используется для связи обязателен, это нужно чтобы скорость работы не была грустной.

    причем как система определяет кто именно будет индексом - непонятно, и вешает на этот индекс созданные связи

    какой индекс использовать решает внутренний оптимизатор mysql.
    Чтобы увидеть какой индекс использует определенный запрос есть explain: https://habr.com/ru/post/211022/

    Создавать индекс на все поля сразу не нужно, это наоборот замедлит работу, если нет запросов которые бы использовали все поля из этого индекса.

    Поэтому индексы надо создавать точечно для каждого набора полей в запросах для максимальной скорости работы. Т.е. если данных реально много и работает медленно, то надо создавать индексы под каждый запрос отдельно.
    Индекс используется для всех полей которые используется в запросе во where, order, group, агрегатных функциях(вроде как)

    можете в 2х словах на пальцах объяснить роль этого индекса, и кого нужно на эту роль назначать?

    Здесь что-то на эльфийском.
    Какие роли и что вы собрались назначать.
    Как написал выше mysql сам решает какой индекс оптимальнее и использует какой-то один для запроса наиболее подходящий.

    select * from table where field1 = 123 and field2 = 321 order by field3

    индекс на field1 + field2 + field3 будет оптимальным в большинстве случаев для этого запроса. Даже если там у вас еще 10 полей в таблице.
    Ответ написан
    1 комментарий