• Можно ли на сайте определить, что человек в наушниках?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Самый адекватный вариант - тупо спросите "можно воспроизвести звук?". Уверен что 99,9% пользователей не будут рады левым непрошенным звукам на сайте, через что бы они там не выводились...
    Ответ написан
    Комментировать
  • Как получить из массива элементы, которые удовлетворяют некоторому условию?

    vabka
    @vabka
    Токсичный шарпист
    Используй функцию filter
    data.filter(it => it.role === "student")
    Ответ написан
    Комментировать
  • Кто знает самый быстрый шаблон сайта?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Дарю:
    <html>
    <head></head>
    <body>Hello world!</body>
    </html>
    gps близкий к 100 на любом устройстве
    Ответ написан
    3 комментария
  • Как сделать полный бэкап системы (Linux) rsync или tar?

    meDveD_spb
    @meDveD_spb
    откуда вообще могли возникнуть мысли, что это могут быть подходящие варианты?
    это не так.

    под управлением qemu/kvm.

    устанавливаем PVE, потом PBS. всё.
    Ответ написан
    Комментировать
  • Как с помощью Javascript или JQuery я могу заменить последние две цифры номера телефона на "**"?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    "88005553535".replace(/\d{2}$/, '**');
    Как-то так. Писал с телефона.
    Ответ написан
    Комментировать
  • Как вызывать метод один раз а потом запоминать его значение?

    @Akela_wolf
    Extreme Programmer
    Статическая переменная в функции. И проверять - если не null - то возвращать её значение. Это один из самых простых вариантов кэширования. При наличии у функции аргументов - статический массив.

    Проблемы возникают, как всегда с кэшированием, когда кэш устаревает. То есть, у вас добавится запись в БД (или откуда get_users берет пользователей) - а кэш останется старым. В случае PHP это частично снимается тем, что он перезапускает скрипт на каждый запрос, то есть такой кэш будет жить в пределах одного запуска скрипта. Но тем не менее, это может привести к глюкам.

    Вообще, прежде чем добавлять такое кэширование нужно хорошо подумать:
    а) а что я тут выиграю? Даже если это запрос в БД - у БД есть свой кэш, так что второй раз запрос отработает очень быстро. Критично ли что их будет 2?
    б) можно ли переписать код, чтобы это работало не так?

    По второму случаю у вас в коде нарушение принципа единственности ответственности: функции method2 и method3 жестко связаны (coupled) с функцией method1 (а функция finish - с ними всеми). Собственно это и порождает проблему. Код можно переписать, например так:
    сlass Neptun(){
      private function method1(){
        $users_count = get_users();
        return $users_count;
      }
    
      private function method2($users){
        if($users > 10){
            return 'it more than 10';
         }
       }
    
      private function method3($users){
        if(in_array(10, $users)){
             return 'there are user with ID 10';
        }
      }
    
      public function finish(){
        $users = $this->method1();
         echo $this->method2($users) . ' ' . $this->method3($users);
      }
    }


    Все, функции method2 и method3 "расцеплены" (decoupled) с функцией method1. А "сборку" в общую конструкцию осуществляет публичный метод finish
    Ответ написан
    1 комментарий
  • Как ответить сразу и продолжить выполнять скрипт?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Не хочешь использовать rabbitmq, используй хотя бы крон.
    Если у тебя задачи выполняются дольше минуты, то надо принять это и реализовать функционал по-человечески:
    1. Принимаем запрос из внешней системы, складываем в очередь, отвечаем внешней системе
    2. В фоновом режиме находим все необработанные задачи и обрабатываем их, тратя на это столько времени, сколько потребуется.

    PS А если тебе важно предоставить результат работы твоего скрипта внешней системе, то надо разобраться что у тебя там целую минуту делается.
    Минута - это очень много. У меня ОС в 3 раза быстрее грузится, а там 100% больше функционала чем в твоём скрипте.
    Ответ написан
  • Сколько нужно проектов для портфолио верстальщика чтобы зарабатывать первые деньги?

    opium
    @opium
    Просто люблю качественно работать
    Можно без
    Ответ написан
    Комментировать
  • Как сделать полный бэкап системы (Linux) rsync или tar?

    @MaxKozlov
    Не знаю зачем, но можете посмотреть rear
    https://relax-and-recover.org/
    там и tar и rsync и всё что хочешь
    С зералами на btrfs только не дружит, а так - идеальный велосипед
    Ответ написан
    Комментировать
  • Js проверка isset?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Оператор ! - это булево отрицание. И он приводит свой аргумент к типу boolean. Автор не открыл Америку, и это используется. Но использовать нужно с умом.
    Значения приводимые к false - это undefined, null, '' (пустая строка), 0, 0n (bigint 0), NaN.
    Соответственно, когда у нас есть например строка или undefined или например число или undefined - такая проверка на undefined может быть небезопасна, так как она отсечет еще и пустую строку, 0 и NaN.

    !! - это всего лишь 2 идущих подряд оператора !, это такое популярное сокращение для быстрого каста к boolean.
    Еще автор статьи предлагает использовать !!!, но это бессмысленно, так как тройное отрицание даст тоже самое что и одинарное.
    Ответ написан
    1 комментарий
  • Как с помощью for добавить к существующим значениям в массиве какой-то текст?

    Alexandre888
    @Alexandre888
    Javascript-разработчик
    for (let i = 0; i < animals.length; i++) animals[i] = `Прекрасное животное ${animals[i]}`;
    Ответ написан
    5 комментариев
  • Как выбрать ноутбук для Linux?

    @AVKor
    Посмотреть модели с предустановленным Линуксом. На них он будет работать точно.
    Навскидку: Dell.
    Ответ написан
    Комментировать
  • Как сделать правильный запрос на php?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    А это, простите, что вы пытаетесь сделать-то?
    $txt = '';
    foreach ($sPD as $key => $value) {
        $txt .= "<b>".$key."</b>".$value."%0A";
    }


    сейчас получается, что вы пытаетесь отправить серверу кусок какго-то невнятного текста, а он ожидает пар ключ+значение, закодированных в urlencode.
    Не знаю, каких конкретно переменных ожидает ваш хук, но подозреваю что должно быт так:

    'content' => http_build_query($sPD)

    ... а кусок с foreach'ем этим не нужен вовсе

    PS Ещё больше непонятно, зачем весь этот кусок на php, когда данные формы можно сразу отправить в CRM, прямо из JS.
    Ответ написан
    9 комментариев
  • С чего начать изучение программирования школьнику?

    @Akela_wolf
    Extreme Programmer
    Насчет линукса. Да, на мой взгляд однозначно стоит. Опыт работы в линуксе даст тебе более глубокое понимание как функционирует операционная система, возможность заглянуть "под капот", увидеть на практике такую вещь как разные реализации одного и того же (например разные оконные менеджеры - суть у них одна, но каждый реализует это задачу разными путями). Поэтому советую что-нибудь "конфигурябельное", типа ArchLinux (Gentoo - это уже совсем-совсем хардкор, новичку с ней будет тяжко). Что касается повседневных задач - да нет там никаких непреодолимых трудностей, если не брать какую-то прям специфику. Браузер - есть. Просмотр видео, прослушивание музыки - есть. Работа с документами - есть. Работа с графикой и 3D-моделированием - есть. Игры - тоже есть, хоть иногда и с приколами (но сказано что игры не интересуют, поэтому не так важно).

    Насчет языка. Вообще язык программирования выбирают под задачу. Если хочется заниматься, например, системным программированием (драйверы, файловые системы, загрузчики, ядро ОС, виртуальные машины/гипервизоры, СУБД и пр.) - то это C/C++. Если хочется заниматься нейросетками - там хорош Питон. Фронтендом - без Javascript/Typescript сейчас никуда. Но если говорить об языке программирования общего назначения (на котором можно написать множество прикладных программ), то я рекомендовал бы следующие критерии:
    • Статически типизированный. Особенно важно, на мой взгляд, в начале обучения, так как закладывает базу - навык писать код строго. Динамически типизированные языки, такие как PHP, Python, Javascript и пр. позволяют программисту писать код "как попало", что чревато трудноуловимыми ошибками, формируют "плохие привычки", которые потом будут мешать.
    • Поощряющий декларативный (функциональный) стиль программирования. Функциональный стиль программирования сейчас набирает популярность, так как позволяет писать более сложные программы и проще тестировать их по отдельным частям.
    • Кроссплатформенность. То есть возможность создавать программы для Windows, Linux, MacOS, Android и т.д. Это не столько про язык сам по себе, сколько про его окружение - наличие кроссплатформенных библиотек и инструментов для разработки.
    • Востребованность. Ну тут все просто - учить, например, Паскаль сейчас вряд ли целесообразно - реальную разработку на нем практически не ведут. Поэтому лучше изучать что-то с чем потом будешь сталкиваться на практике (в чужих проектах) и с которым легче будет найти единомышленников чтобы совместно разрабатывать большие проекты. И, в перспективе, строить карьеру в этой области.

    Итак, смотрим что у нас есть на этот счет:
    1. C/C++. Статически типизированный и довольно строгий. Очень сложный. На нем можно писать программы в любом стиле, включая метапрограммирование. Кроссплатформенный до жути. Позволяет решать задачи, максимально близко к "железу". Востребован ограниченно. Уникальная ниша - системное программирование и программирование микроконтроллеров. В силу его очень большой сложности - лично я не рекомендую.
    2. Javascript/Typescript. Динамически типизированный (у Typescript есть статическая типизация, но с приколами унаследованными от Javascript). Поддерживает как императивное, так и декларативное программирование. В первую очередь предназначен для браузеров, хотя сейчас есть кроссплатформенная платформа node.js. Востребован в первую очередь на фронте. Так что к нему стоит сразу присоединять в плане обучения HTML/CSS и какой-нибудь фронтовый фреймворк: Angular/React/Vue и т.п. Также пригоден для написания бэкэнда (node.js), десктопных приложений (Electron), мобильных приложений (React Native). Перспективное направление, но лично я не рекомендовал бы как первый язык из-за определенного бардака в экосистеме. В этом направлении легко нахвататься "плохих привычек".
    3. С#. Статически типизированный, поддерживает декларативное программирование, имеет реализацию для Linux (Mono), но в целом заточен на Windows. Вполне востребован, в частности используется в Unity (движок для разработки игр). Насчет него не имею личного мнения, так как не использую в своей работе.
    4. Java. Статически типизированный, поддерживает декларативное программирование, запускается на всем где есть JVM (включая Android). Write once, run anywhere. Востребован в основном в суровом энтерпрайзе, в больших проектах для серьезного бизнеса. Также применяется в вебе.
    5. Kotlin. Улучшенная Java, разработка фирмы jetBrains. Статически типизированный, очень хорошо поддерживает декларативное программирование. Позволяет легко писать асинхронный код (корутины). Запускается там же где и Java (так как использует ту же JVM), плюс имеет возможность компиляции в JavaScript и в native код для Windows/Linux/MacOS. Kotlin для JVM - вполне зрелое решение, Kotlin Multiplatform - пока еще нет, но быстро развивается. Является официальным языком для разработки под Android. Востребован пока не очень (в основном в области мобильной разработки), но его популярность растет и он начинает теснить Java в её традиционном сегменте. В перспективе может стать языком способным охватить большую часть сфер прикладного программирования: backend, frontend, десктопные и мобильные приложения. На мой взгляд - перспективно.
    6. Scala. Еще одна улучшенная Java. Статически типизированный, очень хорошо поддерживает декларативное программирование. Кроссплатформенный как и Java (сейчас вроде появился компилятор в JS, как и Котлина). Сложный. Очень легко написать конструкции в которых "без поллитры не разберешься". В силу сложности востребован мало. Есть уникальные фичи, но не так много по сравнению с Котлином (большая часть реально востребованных фич Скалы в Котлине есть). Ознакомиться в перспективе стоит, рекомендовать как основной язык не буду.
    7. Haskell. Статически типизированный, декларативный язык (не просто поддерживает декларативное программирование - на нем сложно писать иначе). Кроссплатформенный. Востребован в специфических областях. С моей точки зрения - король функционального программирования и в силу этого сложный (математические абстракции в полный рост). Ознакомиться также стоит, просто чтобы почувствовать всю мощь функционального программирования - мозг переворачивает очень хорошо и позволяет глубже понимать другие языки. Как основной язык - рекомендовать не буду.
    8. Python. Динамически типизированный, поддерживает декларативное программирование, кроссплатформенный. Вполне востребован в вебе, в научных исследованиях (нейросети). Опыта работы с ним имею мало, но рекомендовать бы не стал из-за динамической типизации.
    9. PHP. Динамически типизированный, поддерживает декларативное программирование, кроссплатформенный. Весьма востребован, но практически только в вебе (разработка сайтов). Очень низкий порог вхождения, из-за чего очень много плохого кода (хотя сейчас появились достойные фреймворки - Symfony, Laravel, Doctrine и т.д.). Как язык для изучения - не рекомендую.

    Конечно есть и другие языки, которые я не упомянул в силу того что не знаком (или плохо знаком) с ними.
    Из приведенного списка я бы в первую очередь выделил C#, Typescript, Kotlin. Мой личный выбор на данном этапе карьеры - Котлин, но думать, сравнивать и выбирать, разумеется, вам.

    Еще в перспективе стоит познакомиться с такой темой как СУБД и язык запросов SQL. В вебе, как я уже писал, пригодится HTML/CSS. Ну и далее конкретные специфичные вещи, подбираемые уже под конкретную задачу.

    Теперь о книгах. Книги по языкам рекомендовать не буду. Но назову несколько книг, которые, по моему мнению, обязательно стоит прочитать любому программисту:
    1. Э. Хант, Д. Томас. Программист-прагматик
    2. Р. Мартин. Чистый код.
    3. По мере набора опыта: Р. Мартин. Чистая архитектура
    4. При желании стать профессиональным программистом: Р. Мартин. Идеальный программист
    5. Сложная, но тем не менее умная книга: С. Макконнелл. Совершенный код

    Это то что пригодится в любом случае. А дальше - все зависит от выбранного языка и области его использования.
    Ответ написан
    12 комментариев
  • С чего начать изучение программирования школьнику?

    xez
    @xez
    TL Junior Roo
    Изучай все что интересно, не изучай ничего что не интересно: так победишь.
    Ответ написан
    8 комментариев
  • Как убрать подсветку в vs code?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Ума не приложу зачем, но цвет выделения (и вообще любые цветовые кастомизации) можно настроить по пути как на картинке.

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

    Чтобы убрать - нужно сделать прозрачным, указать любой цвет и 00 на альфа-канале, например `#ffffff00`.

    620eab4c3659a131653695.jpeg
    Ответ написан
    3 комментария
  • Про какие подводные камни я должен знать, если подключаю оплату на самописный сайт с нуля?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    изучи одну, остальные +- похожи

    и ответь сам себе и нам: за сегодня сколько и каких сделано бекапов?
    Ответ написан
    7 комментариев