• Домен покупают или арендуют?

    hint000
    @hint000
    у админа три руки
    получается в реестре доменных имен уже сгенерированы вообще все доменные имена и мы арендуем ранее сгенерированное имя?
    Это нужно выяснять у древнегреческого философа Платона, существует ли каждая идея в мире идей ещё до того, как она пришла кому-то в голову (или была сгенерирована). В нашем материальном мире невозможно сгенерировать счётное множество имён, потому что для этого потребовалось бы бесконечно много времени и бесконечно много памяти.

    Домен покупают или арендуют?
    Ни то, ни другое. Его регистрируют. Регистрация домена - это услуга, а не товар.
    Ответ написан
    1 комментарий
  • Где лучше взять ресурсы для обработки в Photoshop?

    @dmshar
    Берете смартфон. Фотографируете что попало. Обрабатываете используя свои навыки. Представляете пару "до"-"после".
    Мне кажется, что это очевидный путь.
    Что значит при этом "спалиться" - увы, не понимаю.
    Ответ написан
    8 комментариев
  • (Вопрос без однозначного ответа) Почему в window socket 2 используется так много различных дефайнов и псевдонимов?

    @Wexter
    Какой смысл задавать вопросы к причинам существования древнего легаси? Написал когда-то студент за миску риса, с тех пор и кочует для обратной совместимости
    Ответ написан
    Комментировать
  • Как подключить между собой устройства??

    hint000
    @hint000
    у админа три руки
    Если понятным языком сказать, то вы хотите стримить в интернет процесс игры на PS5, верно? Ну или просто записывать видео на ноут.

    Ноут имеет только видео-выход, не имеет видео-входа, т.е. он не принимает видеосигнал от других устройств.
    Телевизор имеет только видео-входы, не имеет видео-выхода, т.е. он только принимает сигнал, но не передаёт.
    Для решения задачи вам нужны две железяки:
    1. разветвитель HDMI (например, если подключить к нему два монитора или телевизора, то на них будет одинаковое изображение);
    2. устройство видеозахвата (video capture device, video grabber, "граббер", "грабилка"), у которого будет HDMI-вход и USB-выход, вы подключите его через USB к ноутбуку; здесь нужно обратить внимание на ограничения разрешения и частоты кадров у такого устройства; т.е. стримить в хреновом-то качестве не трудно, :) а вот в хорошем качестве... возможно, потребуется более серьёзное железо (если бы был не ноут, а десктоп, то можно было использовать PCIE-карту видеозахвата).
    Ответ написан
    Комментировать
  • Как вызвать функцию с "именованными аргументами" в JS?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    В целом - ответ "никак". Потому что так делать не надо. Это не очевидно. Код с душком.

    Но если очень хочется, то такие варианты:
    1) Нормальный вариант (даже без душка):
    func(1, undefined, undefined, 2)
    2) Нормальный вариант - объявлять не переменные, а объект на вход c деструктуризацией его свойств:
    function func({ a, b, c, d }) {
      return a+d
    }
    func({ a: 1, d: 2 });

    То есть это сокращённый вариант от такого:
    function func(data) {
      return data.a+data.d
    }
    func({ a: 1, d: 2 });

    3) Грязный вариант - создать новую функцию с забинжеными аргументами:
    function func(a,b,c,d) { return a+d }
    var badFunc = (a,d) => func.bind(null, a, undefined, undefined, d)();
    badFunc(1,2)
    Ответ написан
    4 комментария
  • Можно ли из оператора PHP match() получить только ключи или узнать существование ключа без выполнения соответствия?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как обычно, высокоинтеллектуальный вопрос из серии "помогите закрепить пилу на столе, а то она падает, когда я пытаюсь отпилить себе ногу!"

    Судя по всему, для решения исходной задачи, какой бы она ни была, матч нужен как корове седло.
    Но вы зачем-то пытаетесь его сюда вкрячить.
    И единственным осмысленным ответом будет не использовать матч вовсе.
    А осмысленным вопросом будет описать исходную задачу, для которой понадобилось это извращение.

    К примеру, для приведенного кода матч сто лет в обед не нужен, достаточно одного массива
    $match = [
       'trim',
       'strrev',
       'str_shuffle',
    ];
    $value = in_array($func, $match) ? $func($value) : $value;


    Но судя по всему, вы пишете какой-то динамический код, что-то вроде роутера.
    То есть нормальным вариантом будет не это колупание с массивами, а нормальный класс с методами и проверка method_exists
    Ответ написан
  • Хорошая ли сборка для игр в 2-4k и работы?

    xez
    @xez Куратор тега Компьютеры
    TL Junior Roo
    Для игр не нужен i7
    Не нужна мать на старшем чипсете.
    Не нужна вода (потому что никогда не нужна).
    Ответ написан
    1 комментарий
  • Изучила принцип верстки БЭМ, не уверенна что правильно выполнила?

    delphinpro
    @delphinpro
    frontend developer
    Кнопка - это отдельный блок
    Поиск - блок

    <header class="header">
        <div class="header__btn">
            <button class="btn">Предложить новость</button>
        </div>
        <div class="header__search search">
            <a class="search__number" href="tel:+73513651711">8 (3513) 65-17-11</a>
            <img class="search__img" src="img/search.svg" alt="">
        </div>
    </header>


    В навигации то же самое
    Кроме того внутри UL могут быть только LI
    OPTION не стилизуются, им не нужен класс

    <div class="nav">
        <ul class="nav__menu menu">
            <li class="menu__item"><a href="">Новости</a></li>
            <li class="menu__item"><a href="">Телепроекты</a></li>
            <li class="menu__item"><a href="">Реклама</a></li>
            <li class="menu__item">
                <select name="">
                    <option value="">Онлайн</option>
                    <option value="1">new</option>
                    <option value="2">new</option>
                </select>
            </li>
            <li class="menu__item"><a href="">Программа передач</a></li>
            <li class="menu__item">
                <select name="">
                    <option value="">Ещё</option>
                    <option value="1">new</option>
                    <option value="2">new</option>
                </select>
            </li>
        </ul>
    
        <div class="nav__contacts contacts"
            <p class="contacts__title">Подписывайтесь на нас:</p>
            <ul class="contacts__list">
                <li class="contacts__item"><img src="img/Facebook - Negative.png" alt=""></li>
                <li class="contacts__item"><img src="img/вк.png" alt=""></li>
                <li class="contacts__item"><img src="img/однокласники.png" alt=""></li>
                <li class="contacts__item"><img src="img/inst.svg" alt=""></li>
                <li class="contacts__item"><img src="img/YouTube - Negative.png" alt=""></li>
            </ul>
        </div>
    </div>


    Подобных имен файлов лучше избегать img/YouTube - Negative.png. Используйте для имен файлов только символы латинского алфавита в нижнем регистре, цифры и символы _-, и ничего другого, включая пробелы.
    Ответ написан
    Комментировать
  • При использовании методов добавления элементов в массив он под капотом создается заново?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?

    Нет. push быстрее.

    А если чуть более детально, то под капотом это выглядит примерно так:
    - Вы объявили пустой массив. Движок зарезервировал память на массив из 10ти(разные движки могут под разную длину массива резервировать место) элементов.
    - Делаете пуш. Пока элементов меньше чем зарезервировано - всё очень быстро, так как движок просто кладёт элемент в зарезервированную ячейку памяти, адрес которой известен.
    - Как только элементов стало больше, под капотом ищется новая доступная область памяти на ещё 10 элементов и далее эти области памяти линкуются между собой (первая + вторая).

    В случае же со spread [...array] каждый раз создаётся новый массив, то есть каждый раз происходит поиск доступной памяти на массив + перебор массива для того чтобы заспредить его.

    Примерно так.
    Ответ написан
    2 комментария
  • Какие модули надо доставить на vps?

    Правильный ответ:
    На вопрос сможет ответить только тот, кто этот сайт разрабатывал (или хотябы тот, кто видел код), тк раз вы не можете самостоятельно на свой вопрос ответить, то ваше утверждение про чистоту голословное.
    Мы не знаем даже какая версия php использовалась при разработке, какая версия mysql использовалась (и вообще mysql ли), какой веб-сервер использовался (может вообще через nginx всё работало), были ли какие-то особенные настройки без которых после переноса ничего работать не будет, использовался ли composer для управления зависимостями (формально это не фреймворк таки), и так далее, список можно продолжать очень долго, и он не будет противоречить фразе "Сайт написан на чистом php без использования фреймворков"

    Серьёзный, но не интересный ответ

    1. Зачем ftp? Неужели вашим пользователям он реально нужен? Если вам нужен ftp чтобы работать с файлами на сервере, то на самом деле вам ftp не нужен - вы можете файлы редактировать локально или через ssh, а загружать изменения через уже встроенный scp, который к тому же безопаснее.

    2. Для того чтобы сайт открывался по доменному имени ничего особенного не нужно ставить - нужно только настроить apache, чтобы он слушал запросы по этому домену. + Настроить DNS, но это уже отдельный вопрос, который этого сервера не касается.

    3. Если больше никаких зависимостей у сайта нет (только чистый php, без использования curl или mysql), то достаточно установить интерпретатор php: sudo apt install php и опять же корректно настроить apache
    Ответ написан
    4 комментария
  • Выбор стека бэкенда для обработки 10 тыс. запросов?

    1. Больше слушай заказчиков. Если он такой эксперт, то зачем вас нанял? .NET прекрасно работает на Linux.

    2. 10k rps - это нужно смотреть на то, каких именно запросов в секунду оно должно держать и в каких условиях.
    Нужно хотябы уточнить, что именно будет происходить в рамках обработки запроса и сколько железа можно на это выделить. Может вам вообще нужно 10к запросов на какой-то встраиваемой железке делать?

    Как уже выше сказали - это достижимо в принципе с любым языком, но опять же зависит от условий.
    Также следует различать задержку и пропускную способность. С пропускной способностью в большинства современных фреймворков/языков проблем нет, если есть поддержка асинхронной модели работы.
    Если очень важна именно задержка - смотри в сторону C++, Rust, Go.

    3. Выбирай то, с чем умеете работать, и на счёт чего вы уверены.

    Если уверены, что сможете запустить C# на Linux и достичь нужного результата - берите C#.
    Если уверены, что сможете достичь нужного результата на python - берите python.
    Ответ написан
    Комментировать
  • Как прикрепить внешний доп ipv4 к пк за роутером?

    @Drno
    Вариантов 2. Либо пробросить нужные порты до нужного ПК.
    Либо нужен роутер с поддержкой функционала по пробросу IP.
    На примере микротика - для этого достаточно объединить 2 порта в bridge, в 1й воткнуть провайдера, во второй ПК. И если подразумевается несколько IP адресов, то можно будет на ПК назначить внешний IP.
    Естественно домашние асусы \ ТПлинки такое не умеют.

    Для GRE - роутер должен уметь прокидывать GRE трафик, тот же микротик это умеет.
    Для pptp сервера, где тоже используется GRE, в дополнение нужны еще и порты
    Ответ написан
    Комментировать
  • Какой .gitignore юзать и почему он всё ещё видит папку .idea?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Для игнорирования папки, лежащей в корне проекта, файл .gitignore нужно класть в корень проекта.
    Ответ написан
    1 комментарий
  • GDPR сколько хранить персональные данные покупателей?

    Сколько укажешь в своём соглашении на обработку ПД - столько и можно, если это в адекватных рамках.
    Типа если ты пишешь в своём соглашении, что ты будешь хранить персональные данные незарегистрированного клиента ещё 25 лет после выполнения заказа - это очень вероятно посчитают неправомерным.
    Пока клиент к тебе не придёт с желанием их удалить.

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

    Это всётаки не закон яровой)
    Ответ написан
    Комментировать
  • Как найти высоту жидкости в мм если известно давление в паскалях и плотность в кг\см3?

    GavriKos
    @GavriKos
    Если известно давление - то известна и масса (через площадь основания).
    Если известна масса и плотность - то можно узнать объем.
    Зная объем - можно получить высоту - ведь площадь основания бака не меняется.

    Вроде так.
    Ответ написан
    3 комментария
  • Как перевести значение "1 день" в секунды? А еще как перевести значение "1 день" например в 19.05.2023 1:42?

    Простейшая арифметика из третьего класса школы + немного гуглежа по поводу работы со временем в js.
    function getTimerEndFromNow(prompt) {
     return getTimerEndFrom(new Date(), prompt);
    }
    
    function getTimerEndFrom(start, prompt) {
      return new Date(start.valueOf() + getSecondsByPrompt(prompt) * 1000);
    }
    
    function getSecondsByPrompt(prompt) {
      const [count, measure] = prompt.split(' ');
      return count * getSecondsByMeasure(measure);
    }
    
    function getSecondsByMeasure(measure) {
      switch(measure.toLowerCase()) {
        case 'день': return 60 * 60 * 24;
        case 'час': return 60 * 60;
        case 'минута': return 60;
        default: throw new Error(`Unknown measure ${measure}`);
      }
    }


    С ЭТИМ БЛИН ДАЖЕ БЕСПЛАТНЫЙ БОТ НА ОСНОВЕ GPT СПРАВЛЯЕТСЯ

    Запрос:

    /gpt
    Мне нужно перевести значение "1 день"/"1 час"/"1 минута" в секунды для таймера. А точнее функция, но я вообще не знаю как это сделать. И еще одну функцию для того что бы например таймер получил сегодня а пишется во сколько он закончится, точнее например в 19.05.2023 1:42

    Напиши функции на js

    Ответ:

    Для перевода "1 день"/"1 час"/"1 минута" в секунды можно использовать следующую функцию:

    function convertToSeconds(time) {
      const timeArr = time.split(' ');
      const value = parseInt(timeArr[0]);
      const unit = timeArr[1];
    
      switch (unit) {
        case 'день':
          return value * 24 * 60 * 60;
        case 'час':
          return value * 60 * 60;
        case 'минута':
          return value * 60;
        default:
          return 0;
      }
    }


    Пример использования:

    const secondsInDay = convertToSeconds('1 день'); // 86400
    const secondsInHour = convertToSeconds('1 час'); // 3600
    const secondsInMinute = convertToSeconds('1 минута'); // 60


    Для форматирования даты в строку можно использовать объект `Date` и методы `getFullYear()`, `getMonth()`, `getDate()`, `getHours()`, `getMinutes()`, `getSeconds()`:

    function formatDate(date) {
      const year = date.getFullYear();
      const month = addLeadingZero(date.getMonth() + 1);
      const day = addLeadingZero(date.getDate());
      const hours = addLeadingZero(date.getHours());
      const minutes = addLeadingZero(date.getMinutes());
      const seconds = addLeadingZero(date.getSeconds());
    
      return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`;
    }
    
    function addLeadingZero(value) {
      return value < 10 ? '0' + value : value;
    }


    Пример использования:

    const endDate = new Date(2023, 4, 19, 1, 42, 0);
    const formattedDate = formatDate(endDate); // '19.05.2023 01:42:00'


    Ответ написан
    7 комментариев
  • Какие DE сейчас поддерживают Wayland?

    Ну DE не так уж много в принципе существует )
    Можно было бы отдельно для каждой ручками загуглить

    xfce: Активно в работе, но ещё не готово, как я понял (https://wiki.xfce.org/releng/wayland_roadmap#compo...)
    lxde: вроде уже давно поддерживается, но не нашёл ссылок.
    mate: вроде с прошлого года поддерживается wayland
    lxqt: вроде ещё нет https://github.com/lxqt/lxqt/issues/10
    deepin: в бете есть поддержка wayland https://www.deepin.org/en/deepin-os-deepin-v23-bet...
    cinnamon: вроде что-то двигается, но не понял, завезли ли поддержку.
    Ответ написан
    5 комментариев
  • Как используются "магические константы" в реальных реализациях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты должен спрашивать какие алгоритмы игровой графики бывают. Это важное. А константа - это просто реализация.

    Почитай Генри Уоррена - Алгоритмические трюки для программистов. Там есть всякое. Деление через умножение на магию. Умножение через сдвиги. Дискретные логарифмы и корни и прочее.
    Ответ написан
    Комментировать
  • Как в докере отключить рестарт контейнеров локально?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    В композе можно переопределять настройки с помощью override-конфига или директивы extends: https://docs.docker.com/compose/extends/
    Ответ написан
    3 комментария
  • Провайдер которая тянет выделеннку по физу?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Дело не в провайдере. Это не их дело - кабель тянуть. Они заказывают это подрядчикам - всяким СМУ и т.п.
    Но провайдеру делать для вас это не выгодно, не окупится.

    spoiler
    Прокладка не слишком толстого кабеля в грунт сейчас стоит где-нибудь от 200 тыс./км., включая материал, проект, оформление, стандартные согласования.

    Но если по дороге возникают: жадные собственники участка; автодороги; ж/д; газ/нефть… то это на полгода-год получения ТУ, согласований, платежей за выдачу ТУ, за согласования, за проверку выполнения ТУ и т.п. И не всегда удается порешать, иногда «нет технической возможности» и всё. Естественно, это за отдельные деньги, причем суммы могут быть любые вообще.

    Но вот если вы думаете, что прокладка кабеля это и всё, вы ошибаетесь. С одной стороны кабель закончится у провайдера, а это - вход в его кабельную канализацию, аренда канализации, аренда места на кабельросте (полка такая) и стойке в кроссе, где кабель будет расшит на соединительную панель.

    Если вы протанцуете этот танец, то вы получите темные волокна от провайдера до второго конца вашего кабеля.

    Со стороны провайдера вам надо подать в кабель сигнал. 10 Гбит, так-то это не мало, и для работы с таким гарантированным трафиком у провайдера должно быть соответствующее оборудование с соответствующим портом в вашу сторону и соответствующим аплинком «наверх». Если такового нет - добавляйте стоимость такого оборудования, его шеф-монтаж, настройку. Со своей стороны тоже в комп оптику просто так не воткнете. Тоже стойка, патч-панель оптическая, медиаконвертер, преобразующий оптику в медь (и не забываем про 10 Гбит, это сильно удорожает железо, да и медь тоже).

    И вот счастливый момент - вы протянули оптику, всё согласовали, всё настроили, заключили договоры аренды на землю, на канализацию, на место в стойке и место вашего кабеля на полках у провайдера. Заключили договор на поставку трафика, оплатили все затраты провайдера по подключению. Стали беднее на 5-6 миллионов, но зато обладатель канала связи.
    Всё, можно насладиться.

    Как же…

    Вот тут-то и начинается самая мякотка.
    Почему сигнал слабый? Почему со сбоями? Где мои 10 Гбит? Или вовсе пропала связь.

    Провайдер отвечает: «ничего не знаю, с моей стороны всё норм».

    Вы едете 20-40 км., чтобы убедиться, что да, с их стороны всё норм, а вот где и почему проблемы - неизвестно. Может, таки провайдер обманывает; может, где-то повреждение кабеля; может, плохой оптический контакт в разъеме; кот у вас дома перегрыз патчкорд; клали канализацию и порвали ваш кабель. И т.п.

    Вот поэтому провайдер не хочет связываться с прокладкой вам такого кабеля. Ему это не выгодно - эксплуатация не окупится, вы столько не будете платить, чтобы он мог выдерживать SLA по договору с вами.
    Ответ написан
    2 комментария