• Почему мы имеем право решать уравнения методом замены переменной?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Ну, это просто подстановка. Если, как в моем примере, предположить, что z=x^2, то из-за равенства получается и x^2=z. А дальше можно каждый x^2 переписать как z, ведь они равны.

    Или это можно еще понимать как абстрактное мышление. Вот есть у вас уравнение на x. Вы можете заметить какое-то повторяющееся выражение. Оно имеет какое-то значение. Вот это значение можно обозначить новой буквой. Вот вы же можете буквой x обозначить "сколько у вас яблок". Вы точно также можете обозначить буквой z "сколько у вас яблок в квадрате".

    Это можно делать всегда, но в результате этого могут получиться лишние корни. Как например тут, если есть решения с отрицательными z, то никакой x ему не соответствует. Надо аккуратно проверять все значения z и искать соответсвующие им x.

    Кто это придумал, я хз. Наверно примерно тогда же, когда догадались вообще буквы в уравнения вставлять, там же и придумали вставлять их по мере надобности.
    Ответ написан
    1 комментарий
  • Можно ли удалить рекламу Yandex с сайта?

    Fragster
    @Fragster
    помогло? отметь решением!
    Есть несколько предположений:
    1. Сам сайт (или залитый на него вредоносный код через бэктор или намеренно разработчиком)
    2. Вход не через https через мобильную сеть - опсосы замечены в модификации трафика
    2.а Вход через левый прокси (не через vpn, не через socks-прокси, а через http-прокси)
    3. Кривые/вредоносные расширения браузера (хз, есть дли у мобильного я.браузера они, если честно)
    4. Сам я.браузер (что его прям полностью дискредитирует)
    Ответ написан
    2 комментария
  • Как добавить .webp в React?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1. Gulp точно не нужен. Мне прям вспомнился 2016 - тогда еще были сборки реакта галпом...
    2. В составе create-react-app используется webpack. Нужно просто расширить конфиг с помощью craco.
    Вот тутор , который сам для себя проверял на работоспособность: How to Optimize Images for Usage in Websites
    Ответ написан
    1 комментарий
  • Как вы делаете code-review?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    У code review должна быть цель. В моей практике обычно проекты небольшие и там нет отдельных тестировщиков. Получается, что code review отвечает на три вопроса:

    1. Соответствует ли функционал ТЗ?
    2. Создает ли код проблемы команде?
    3. Есть ли тут какой-то специфичный для проекта опыт, который лучше задокументировать, пока мы еще в контексте?


    Получается что-то такое:

    • До выполнения задачи: проводится анализ задачи, формулируется ТЗ. Бывает, что нужно подключиться и помочь с требованиями, с контекстом, в котором все делается. Чем более подробный анализ мы делаем и чем лучше мы понимаем контекст на этом этапе, тем больше вероятность, что потом весь процесс выполнения задачи пойдет как по маслу и code review будет чистой формальностью в конце.
    • До ревью: линтеры проверяют код на соответствие стилю, на отсутствие синтаксического бреда.
    • Дальше - проверка на соответствие функционала ТЗ. Это защита от глупых ошибок в продакшене, которые коснутся пользователей.
    • Потом - на сответствие принятым соглашениям по коду, если они есть в проекте. Обычно это архитектурные паттерны и что-то про зависимости, смотрим не создает ли код проблем окружающим, а то разные глупости порой случаются. Особенно это важно в коде, который не сам в себе, а затрагивает много чего вокруг. Иногда возникает конфликт интересов, когда что-то явно устарело, и соглашения дополняются чем-то. Чем лучше был анализ в начале, тем меньше вероятность, что тут будет, что обсуждать.
    • Дальше уточняющие вопросы по странным местам, если они есть. Это больше с целью узнать контекст задачи, почему приняты те или иные решения. Происходит передача специфичных для проекта знаний в сторону команды. Возможно там же будут какие-то рекомендации по поводу практик, на что стоит обратить внимание в следующий раз. Это будет передача опыта от команды.


    А кто там будет, джун или синьер-помидор - не важно. Все люди ошибаются, и всем нужен контекст происходящего для эффективной работы.
    Ответ написан
    Комментировать
  • Как вкатится во фриланс?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Никак.
    Во-первых, надо выучить ТСЯ/ТЬСЯ
    А во-вторых, фриланс - это самостоятельность.
    С самостоятельностью у тебя большие проблемы.
    Иди на завод
    Ответ написан
    2 комментария
  • Как подружить VsCode и Arduino?

    @jenya92 Автор вопроса
    После нескольких часов блужданий по буржунету - кажется понял, как всё настроить. На случай, если кто столкнётся с такой же проблемой - решается она так. нажимаем F1 и вводим: Arduino: Initialize. После чего Arduino: Board Config. В открывшейся вкладке выбираем параметры своей платы.
    Заnем открываем: .vscode/c_cpp_properties.json и в массив "includePath" добавляем адрес, где лежат библиотеки ардуинки. Для Linux это /home/(имя пользователя)/Arduino/libraries/**. Две звёздочки в конце означают рекурсивное добавление всех библиотек, что есть в каталоге. Если нужны только некоторые - можете добавить только те, что нужно.

    Так же поправил файл .vscode/settings.json:
    {
        "C_Cpp.intelliSenseEngine": "Tag Parser",
        "C_Cpp.default.includePath": [
            "${workspaceRoot}",
            "/home/(имя пользователя)/Arduino/libraries"
    ]
    }


    Здесь добавил параметр C_Cpp.intelliSenseEngine, уже сил не хватило начать искать, что он значит, но без этого - не работает. И ещё раз добавил путь к библиотекам ардуинки. После чего перезапустил студию и всё завелось как надо, все библиотеки подсосались! :)
    Ответ написан
    1 комментарий
  • Объясните на простом примере разницу между ООП и ФП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На чистом ФП программировать достаточно тяжело. Нужно сильно изменить подход к задаче. Чистое ФП предполагает что когда вы вызываете функцию то "вся вселенная замерла". И второй вызов функции с такими-же параметрами будет видеть эту-же мертвую версию вселенной. Это если вобщем.

    Наш мир состоит из постоянно менающихся объектов. Файлы. Сетевые соединения. Объекты в БД. Это грязный мир. И натянуть на него ФП парадигму довольно сложно. В хаскель довольно жёстко порешали с этим. Сказали что есть монада IO. И если функция ее возвращает - то она работает с таким грязным миром. Всё остальное - чистое. Тоесть провели границу.

    Как тебе конфигурить твой роутер в ФП - я честно говоря не знаю. Мы должны сначала договориться об абстракциях. И понять где проходят границы чистого и грязного миров. Что делает get users from DB. Изменяет ли он мир? Или может вернуть внезамно другой результат при тех-же аргументах. Это все - сложные вопросы которые просто выходят за рамки твоего.

    Поэтому лучше не парь себе мозги именно таким вопросом. Кстати функциональщики тоже не могут сойтись на мнении например считать ли Sheme функциональным или мультипарадигменным языком. Вообще строгого деления на такие классы не существует. Можно просто сказать что когда мы программируем - то мы тяготеем к чему-то больше или меньше. Например форма Бекуса-Науэра (БНФ) - это чистое функциональное описание грамматики. А язык XPath - чистый функциональный. При этом и одно и второе могут быть инкапсулированы в проект на языке Java например который вобщем грязно-императивный. Тоесть в каких-то частях проекта мы сами исповедуем ФП.
    Ответ написан
    Комментировать
  • Объясните на простом примере разницу между ООП и ФП?

    Griboks
    @Griboks
    В чистом ФП будет примерно так:
    releaseSocket(releaseConnection(releaseRouter(json(get('/users',prepareRequest(createRouter(routerParams,connect(createSocket('TCP'),ip, port)))),users))))

    Некоторые приёмы использовать стоит, но не самая лучшая идея - писать в функциональном стиле такие программы.
    Ответ написан
  • Что выбрать VPS или PaaS?

    @holyx
    ДевОпс Сисадмин
    cloudservicesseparation.png

    Вот хорошая иллюстрация. Классический PaaS под задачу будет получше, чем VPS. В данной схеме VPS это IaaS, т.е. предоставляется только "железо", на которое нужно самому накатить ОС, настроить, установить нужные пакеты, сконфигурировать их и потом гонять своё приложение.
    По PaaS предоставляется сконфигурированное окружение, на котором уже можно гонять своё приложение. PaaS настроен по шаблону, там с безопасностью будет лучше, чем в VPS сконфигурированной руками не профи. По нагрузке, всё зависит от прожорливости и кривости приложения.

    Если что-то специфическое нужно, то VPS и руками, если стандартное, без заморочек, то PaaS.
    Ответ написан
    1 комментарий
  • Как управлять яндекс-лампочкой в обход апи яндекса?

    @justslipknot Автор вопроса
    Как выяснилось, яндекс лампочки - это ребрендированная Tuya лампочка. У Tuya есть локальный протокол и модуль для Home Assistant. Но я решил вопрос немного иначе:
    1. Устанавливаем приложение Smart Life или Tuya Home (оба совместимы с яндекс лампами)
    2. Сбрасываем настройки лампочек и добавляем их в приложении Smart Life / Tuya Home
    3. Регистрируем приложение на платформе Tuya. Инструкция есть в этом репозитории.
      Пояснение
      Этот шаг нам нужно проделать, чтобы получить Local Key, который требуется для шифрования и расшифровки запросов (Local Key, как я понял, обновляется после сброса настроек). Инструкция, как быстро добавить устройства в приложение платформы Tuya так же представлено в репозитории

    4. Выбираем библиотеку для работы с Tuya local api. Я выбрал вот эту библиотеку для C#. На GitHub странице этой библиотеки есть инструкция по работе с Tuya local api.
    5. Реализуем нужный нам функционал


    Небольшой топорный пример из моего тестового проекта:
    Поиск устройств Tuya в сети

    // Эти данные можно получить на странице вашего приложения на платформе Tuya.
    var accessId = "<access id>";
    var apiSecret = "<api secret>";
    
    // Сканируем сеть на наличие доступных устройств Tuya. 
    // Хранение найденных устройств реализуется как душе угодно
    
    var scanner = new TuyaScanner();
    scanner.OnNewDeviceInfoReceived += (sender, info) =>
    {
       // логика сохранения найденных устройств 
    };


    Получение Local Key


    Самый важный этап.
    Пример взят из репозитория библиотеки
    var api = new TuyaApi(region: TuyaApi.Region.CentralEurope, accessId: ACCESS_ID, apiSecret: API_SECRET);
    var devices = await api.GetAllDevicesInfoAsync(anyDeviceId: DEVICE_ID);
    foreach(var device in devices)
    {
        Console.WriteLine($"Device: {device.Name}, device ID: {device.Id}, local key: {device.LocalKey}");
    }


    Отправка команд устройству

    var device = new TuyaDevice("<IP адрес>", "<local key>", "<device id>");
    
    // Пример команды включения лампочки
    // Метод FillJson автоматически подставляет нужные параметры, поэтому сразу пишем запрос.
    // Про методы DPS можно почитать в официальной документации Tuya
    var onCommand = device.FillJson("{\"dps\":{\"20\":true}}");
    
    var request = device.EncodeRequest(TuyaCommand.CONTROL, onCommand );
    
    // Посылаем сигнал. Если устройство не ответит, то падает исключение 
    var encodedResponse = await device.SendAsync(request);
    var response = device.DecodeResponse(encodedResponse);



    Далее остаётся разобраться с кодами команд и можете контролировать лампы как вам угодно.
    Ответ написан
    3 комментария
  • Как научиться декомпозировать задачи?

    Adamos
    @Adamos
    Дробить задачу еще на более мелкие совсем не охота

    Ну и зря. Вообще-то технологиям планирования совместной работы уже не первый век, и важнейший этап - как раз выделение тех участков работы, которые критичны для начала работы на других участках, и подтягивание их на диаграмме Ганта как можно раньше, чтобы уменьшить простой. Потом уже менее критичные задачи ложатся на свободные участки и параллелятся относительно друг друга.
    Так, например, нас учили делать генплан строительства еще 30 лет назад. До популяризации в РФ всяких там Скрамов и Канбанов.
    Ответ написан
    8 комментариев
  • Почему такой простой javascript код не работает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Потому что вы написали "введённое число равно пять ИЛИ семь". И движок это "семь" читает не как человек, а как отдельное условие, которое всегда равно true.
    num == 5 || num == 7
    Ответ написан
    5 комментариев
  • Какую панель управления хостингом на VPS выбрать в 2021?

    Я перепробовал множество панелей, и имел разный опыт эксплуатации и впечатлений оставленных после использования.

    Cyberpanel - веб-дизайн панели очень плох, но с точки зрения принципов построения панели для сервера который хостит разные сайты - этой панели нет равных среди всех опробованных мною панелей описанных выше. И open_basedir, и разграничение каждого сайта под отдельным пользователем, и приятная структура хранения сайтов аля: /home/пользователь/public_html,log,backup
    И приятные бекапы, и возможность подкрутить всякие штуки по типу Lets Encrypt без проблем, либо ограничение доступа, либо WAF из коробки, либо файловый менеджер, и так далее.

    Но за несколько лет меня эта панель достала. Во-первых, она крайне забагована. Её неоднократно ломали, и ломали мои хобби проекты (статичные сайты). Во вторых - у них через версию баги с обновлениями, которые полностью ломают всю панель и возможность входа внутрь. Причем ломается напрочь без возможности починить, только чистая переустановка. Неоднократно сообщал об этом - никакой помощи нет. В третьих - это баги OpenLiteSpeed, либо баги конфигурации веб-сервера. Когда за 1 месяц собирается сессий на 19 гигов в папке lsphp - это вообще не ок, что аж сервер крашит и inodes все заняты. И это один из багов. Были баги с их кешированием которое включено по умолчанию, и приходилось принудительно в каждом .htaccess отключать для доменов. И баги с бекапами были. Т.е. по принципу созданию в абстрактном понимании - панель топ, классная, молодцы, очень хорошо сделано в плане архитектуры. Но вот баги дурацкие, просто выбешивают.
    Нравилось с ols что все работало относительно хорошо с любым проектом, любыми реврайтами, кешированиями, разными версиями php, и занимало существенно меньше ресурсов чем апач, либо апач и nginx. Но увы - порекомендовать именно эту панель не могу. Я не знаю что должно произойти что бы её допили до нормального состояния.

    VestaCP - долго пользовался этим огрызком. Просто дичайшее отвращение к их темплейтам и конфигам веб-серверов. Какой идиот это писал? И под какие нужды? Огромное количество раз ломали эту панель как в общем, так и лично мне. Но визуально и в плане юзабилити одна из самых беспроблемных и простых и удобных панелей на рынке. В 2021 она мертва. Последние какие-то подвижки и обновления и работа над панелью завершились в году так 2017-2018. Всё остальное делают когда есть свободное время.

    HestiaCP - кусок г. базирующийся на VestaCP, после того как последние забили на разработку.
    Автор этой панели не вытягивает количество проблем и багов в этой панеле и сообщество. Не компетентен, плохо тестирует. Но с точки зрения безопасности в плане админки - он хорошо поработал. Всё остальное - очень плохо. Может даже инсталятор не установить с первого раза панель. Не полноценно поддерживаются разные конфиги установки без апача например на nginx+php-fpm. Крайне убогие наследуемые шаблоны от весты со всеми косяками и проблемами.
    Регулярные баги и проблемы с LetsEncrypt. Жрёт очень много озу. Но визуально хорошо сделано в плане внешнего вида. Под капотом - бред и анархия, но есть куда хуже панельки.
    Этой панели так же как и cyberpanel не хватает крепкого сообщества и волонтеров по допилу панели до нужной кондиции. Увы - очень сырая. Но критических багов как в CyberPanel среди веб-компонентов не было выявлено. Регулярно нужно что-то допиливать в панели.

    FastPanel - лично для меня это какое-то недоразумение. Снова принципы и архитектура вроде хорошая, но все как-то сыро, и иннертно.

    DirectAdmin - скорее мертв, чем жив. Хоть и используется массово на хостерах, но с безопасностью у этой панели швах полный. Если речь идет о шаред хостинге, то взлом одного сайта почти с 100% вероятностью повлечет за собой взлом всех сайтов, так как никаких ограничений в рамках одного аккаунта в плане ACL (разного рода) у панели нет. Из коробки куча абсурда и дегенеративных решений аля блок mysql порта, либо блок других портов через csf. Либо лимиты на размеров файлов. Ранее года 2-3 назад панель была полным днищем. Но после изменений ценовой политики cPanel - нарастили базу, и приняли пулреквесты и предложения, что бы как-то перехватить поток пользователей которые начали мигрировать на другие панели. Я не могу сказать что DirectAdmin в моем личном опыте эксплуатации была хорошей панелью. Мне не понравился опыт взаимодействия, и озвученные выше проблемы особенно с php. В 2021 году интерфейс панели и фичи панели наконец-то удобно расположили, и улучшили для удобства пользователей. Но я бы на этой панеле не сидел. Ну не нравится мне такой подход к панелям в плане архитектуры. Я считаю его не безопасным, убогим.

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

    centminmod - это даже не панель, это скрипты, и автор eva2000 - очень хорошо поработал над ними, и конфигами nginx, myslq, php, и так далее. Это пример того, как должно быть в любой панели из коробки. Конфиги хорошо отточены, допилены, протестированы, и разраб испытывает страсть к серверам и своей панельке, но у него не хватает скилов создать веб-панельку, которой ой как не хватает этому проекту. Одна из лучших панелей в плане стабильности работы и конфигов серверов, из списка озвученного выше. Но не удобная в использовании. Но конфиги - прям конфетка. Но не для мультисайта вообще ниразу, хоть и опции есть. Эта панель для меня некий фундамент, который до меня настроили хорошо, и дали на эксплуатацию. Ручками придется поработать немного в зависимости от веб-приложения (если специфичное), но не так много как в весте. Обычно пару строк измененний в конфигах, не более. Но не работает нормально с множеством сайтов на одном сервере.

    CentOS Web Panel - я вообще не понял что это такое, и зачем оно нужно, и почему оно имеет какую-то популярность.

    Froxlor - не продолжительно использовал, неплохо. Какие-то базовые принципы работы с веб-серверов с множеством сайтов соблюдены. Но есть история о ранних взломах этой панели. Поэтому к сожалению этот факт отягощал и заставил метнуться на другую панель. Ничего особенного, но легковесная, простая панелька. Но доверия чуть больше, чем к vestaCP.

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

    Одна из самых удобных для меня и простых панелей были: cPanel, Plesk, ISPManager но все платные, и дорогие.
    Сейчас сижу на самописных скриптах и своих nginx конфигах. Ибо достало каждую панель ручками допиливать, либо получать уведомления что сайт не работает, потому что баг в модуле очередной панели.

    И да, в моем "ответе" опыт с 2012 по 2021 год.
    И все панели выше я проверял в 2021 году так же, и у кого-то были существенные изменения, а у кого-то вообще их нет. Т.е. отзыв актуален, но субъективен. Возможно у кого-то был другой опыт, но мой таков, каков он есть.
    Ответ написан
    5 комментариев
  • Домен третьего уровня бесплатно?

    DevMan
    @DevMan
    вы реально не можете себе позволить примерно доллар в год, и настрогать хоть 10050 поддоменов?

    нуок, не можете, бывает. но freeenom же никто не отменил.
    Ответ написан
  • Как задеплоить бэк и фронт на одном сервере?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Всё в рамках стандартной конфигурации с проксированием. Делаете два серверных блока, разводите по разным портам в proxy_pass.
    Ответ написан
    Комментировать
  • Как вести себя в ситуации, когда клиент хочет написать заявление в полицию?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Собственно, а на что он собрался жаловаться в полицию? Единственное, что он может приплести, это "незаконное обогащение". Но раз ты работу сделал, то у тебя есть все доказательства того, что деньги получены за дело.
    Второе, что он может попытаться приплести, это незаконная предпринимательская деятельность и уход от налогов. Ему от этого никакой выгоды, разве, что тебе нервы потрепать. Но т.к. ты самозанятый, то это всё вопросы решаемые.

    В общем не парься. Он просто пугает. Ничего серьезного он не может сделать. Обычный борзый клиент. А тебе урок на будущее: работать лучше по договору с тз, желательно с предоплатой, ну а если начинаются перебои с оплатой, то работа должна быть немедленно прекращена до полной оплаты.
    Ответ написан
    2 комментария
  • Как вести себя в ситуации, когда клиент хочет написать заявление в полицию?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Кидалово чистой воды. А вот заблокировали зря. Разблокируйте и сообщите что он не доплатил вам 43000 рублей. И вы подаёте на него в суд. На основании посменной договоренности о работах. Кроме того запишите телефонный разговор на диктофон , видимо будет разговор на повышенных тонах, после этого пишите заявление в собр о вымогательстве. Они это любят.
    Ответ написан
    8 комментариев
  • Почему не получается научиться верстать?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Повторяя за кем-то написание кода, верстать не научишься.

    Но когда начинаю сам верстать макет который еще не верстали на ютубе, то начинаются какие то сложности.


    А вот тут как раз и начинается "учение".
    Решайте эти проблемы самостоятельно. Гуглите, задавайте вопросы.
    Ответ написан
    1 комментарий
  • В какой последовательности учить математику?

    @AVKor
    На мехмате МГУ учат в правильной последовательности.
    Ответ написан
    Комментировать
  • Кто-то сталкивался с подобным при обновлении мака на OS Big Sur?

    @RobQwerty
    Это баг Big Sur ,который apple признала.
    Перезагрузитесь ,cразу же, во время или перед звуковым сигналом, удерживайте клавиши Command и R, пока не появится меню служебных программ.
    Выберите Дисковую утилиту и нажмите кнопку «Продолжить».
    Затем выберите запись тома с отступом (обычно Macintosh HD) из бокового списка.
    Щелкните вкладку «Первая помощь» на панели инструментов и дождитесь активации кнопки «Готово». Щелкните по нему, затем выйдите из Дисковой утилиты.
    Выберите «Перезагрузить» в меню Apple.
    Совету обновляться только с подключенным питанием.
    Ответ написан
    24 комментария