• Как поступить с заказчиком?

    @vism
    А заказчик то причем.
    Это ты оценил проект
    Это ты продолбал уточнения по ТЗ
    Заказчик не должен разбираться в том, как тебе ТЗ составить. Ты должен добиться верного полного ТЗ для тебя. Чтоб ты оценил верно.

    Заказчик вобще не знает что ты там делал, ему сказали цену, он согласился.

    Ты думаешь, что прав, но нет. Все это следствие твоих решений и действий. Ещё и навгокодил, раз код только ты поймёшь.
    Сделать сложно - просто, а сделать просто - сложно.
    Мало того, что хочешь кинуть заказчика, так ещё по сути всю работу зашифровал.

    Щас ты ведёшь себя как строители-кидалы. Которые берутся за ремонт квартиры/стройку дома, а посреди процесса говорят - доплачивай ещё 30% или уйдём. Уйдём = сгнивший дом.

    Вобщем если у тебя ещё осталось что-то честное и человечное, прими свою отвественность, доделай проект и дальше продумывай свои действия и решения наперёд, продумывай риски и страхуйся от них.
    Но не будь, не будь очередным кидалой, который объяснил себе почему "он прав".

    P.S.
    Если этот проект
    https://qna.habr.com/q/1159728
    То вобще стыдно должно быть от таких мыслей.
    Заказчик то ждет от вас хорошую работа наверное, а вы на нём учитесь. Вы уйдёте, а он потеряет и время, и деньги. Мде...
    Ответ написан
    Комментировать
  • Как поступить с заказчиком?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вы ведь сами понимаете, что это ваш косяк, а не заказчика? А чего ему за него платить?

    Мне прям вспомнилась ситуация, когда я пришёл к стоматологу вылечить кариес (пусть будет 2 000 рублей), мне рассверлили весь зуб и заявляют "батюшки, да тут же пульпит!" (12 000 рублей).
    Помогите Маше найти фразу для стоматолога, которая позволила бы сохранить хорошие отношения.

    И вот вы сейчас, по прошествии 2 месяцев, оставите заказчика один на один с незавершённым проектом, в котором никто не разберётся (то есть по сути ни с чем) - то вы поступаете как чудак. Я же вижу по тексту, что понимаете.
    А сюда вы за индульгенцией пришли? :)

    Хотите "сохранить отношения" - доделывайте как есть, в будущем будете мудрее.

    Если совсем невмоготу - возвращаете оплату целиком и сильно извиняетесь (можно даже сверху накинуть).
    В таком случае о хороших отношениях говорить не приходится, но послевкусие хотя бы как от порядочного человека.

    Два совета на будущее:
    1) Перезакладывать стоимость и время разработки;
    2) Если понимаешь, что всё идёт не по плану/пропал интерес / слишком сложно / некомфортно / whatever - сказать об этом сразу и отказаться от проекта, так всегда получается честнее

    Опыт всегда стоит дорого, а 53 000 рублей - ну не самая большая цена его получения :)
    Ответ написан
    8 комментариев
  • Что за программа на скриншоте?

    Geminix
    @Geminix
    Фуллстек nuxt, .net разработчик
    Resolume arena 6
    Ответ написан
    Комментировать
  • Как корректно настроить политику CORS на Laravel 9 (localhost)?

    iMedved2009
    @iMedved2009
    Не люблю людей
    В 'allowed_origins' указать те домены с которых будут разрешены запросы. Я так понимаю у вас это admin.site.ru.
    Ответ написан
    Комментировать
  • Почему js делает неправильный hex?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В UTF-8 есть правила. Поэтому не всякая бинарная строка является валидной UTF-8-строкой.
    spoiler
    Вот вам упрощённый пример. Представим, что вы переводите не в UTF-8, а в ASCII, и что главным правилом является нулевой восьмой бит. Пусть изначальная hex-строка будет FA. При переводе в ascii алгоритм видит, что это какая-то ошибка и решает исправить её, заменив на 7A (символ "z"). Далее при переводе в hex вы уже получаете 7A, а не FA, потому что информация о восьмом бите утеряна.

    Можете попробовать так. Возможно, это и решит вашу проблему X:
    var hex = "354d413043b4b440e1510b00";
    console.log(hex);       // 354d413043b4b440e1510b00
    
    var not_hex = (Buffer.from(hex, "hex").toString("binary"))
    console.log(not_hex);   // 5MA0C´´@áQ♂
    
    var hex_again = Buffer.from(not_hex, 'binary').toString("hex");
    console.log(hex_again); // 354d413043b4b440e1510b00
    console.log(hex === hex_again); // true
    Ответ написан
    3 комментария
  • Почему метод "хочет стать" функцией?

    Lynn
    @Lynn
    nginx, js, css
    Потому что точки с запятой нужно ставить.
    const greeting = {
    ...
    }; // <-- вот тут!!!
    
    (username) ? ...

    или убрать ненужные скобки
    const greeting = {
    ...
    }
    
    username ? ...
    Ответ написан
    1 комментарий
  • Чем лучше пользоваться docker-compose или docker compose?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    The new Compose V2, which supports the compose command as part of the Docker CLI, is now available.

    Compose V2 integrates compose functions into the Docker platform, continuing to support most of the previous docker-compose features and flags. You can run Compose V2 by replacing the hyphen (-) with a space, using docker compose, instead of docker-compose.
    Ответ написан
    Комментировать
  • Как в маршруте laravel получить всё после параметра?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    Route::get('/search/{search}', function ($search) {
        return $search;
    })->where('search', '.*');


    https://laravel.com/docs/9.x/routing#parameters-en...
    Ответ написан
    Комментировать
  • Как я могу ждать выполнения setInterval?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вот пример с setTimeout() — сначала зарядится таймер, отработает: отресолвит промис, и после этого уже сработает финальный console.log()
    async function monitor() {
      await new Promise(resolve => {
        setTimeout(() => {
          console.log("Прошла секунда");
          resolve();
        }, 1000);
      });
    
      console.log("После Вас!")
    }
    
    monitor();
    Ответ написан
    3 комментария
  • В каком формате рендерить видео разрешением 13440*2160?

    @ewgenc
    Так вам ТЗ должен был дать заказчик этого видео, в каком формате/контейнере что и как должно быть.
    Ответ написан
    Комментировать
  • При подключении жесткого диска HDD винда бесконечно грузится, как исправить?

    @Drno
    Отключите проверку смарт в биос
    И это не винда буксует, это БИОС ругается. До загрузки винды ПК еще не дошел
    Ответ написан
    4 комментария
  • Что лучше использовать в связке с Vue - Webpack или Vite?

    @deliro
    Бери vite. Вебпак- неуклюжее, лагающее, монструозное говно мамонта
    Ответ написан
    Комментировать
  • Как завести акк на AWS из России (по состоянию на 20 июня 2022) - появились какие-то годные решения?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Cейчас мир сошел с ума. Люди пачками принимают решения в ущерб себе по причине их политической мотивированности.
    Онлайн-игры не принимают платежи от игроков.
    Производители уходят с рынков, на которых торговали тридцать лет
    Потребители вынуждены ломать бизнес, чтобы заместить производителя, на которого ориентировались годами

    Эрик Блейн, которого больше знают под псевдонимом Джордж Оруэлл, нервно курит в сторонке.

    AWS может быть и рад был бы Вам что-то продать - но ему не дают :) И еще долго давать не будут. И не факт, что когда "там" разрешат - его не забанят "тут"

    "Я знал, что будет плохо, но не знал, что так скоро" (С) В. Цой "Фильмы"
    Ответ написан
  • Где используется Map и Set в JavaScript (примеры использования)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Set удобен, например, когда нужно оставить из набора данных только уникальные.
    пример кода
    const data = [ 1, 2, 2, 3, 3, 3 ];
    const unique = [...new Set(data)];
    unique // [ 1, 2, 3 ]

    Map хорош тем, что ключами в нём могут быть и объекты. Например, HTML-элементы, для которых захочется хранить какие-то данные. И Map запоминает порядок добавления элементов, что может быть полезно при переборе.
    Ответ написан
    Комментировать
  • Что происходит при экспорте видео?

    1. у видео кодеков ещё масса параметров, влияющих на качество и объем файла. Но самый поверхностный – битрейт. Увеличился битрейт – файл стал тяжелее.

    2. качество при каждом перекодировании — падает. Поэтому лучше избегать перекодирования там, где оно необязательно. Например, когда только лишь вырезаете часть по времени, перекодировать не нужно, т.к. картинка остаётся та же самая. Поэтому п.3:

    3. просто обрезать видео лучше без перекодирования. Это можно сделать прямо из командной строки могучим инструментом ffmpeg. Примерная команда:
    ffmpeg \
      -ss 15 \         # пропустить 15 секунд от начала
      -i Source.mp4 \  # имя исходного файла
      -t 30 \          # продолжительность 30 сек.
      -c copy \        # кодек "копия" - не перекодировать
      Result.mp4       # что получится - в этот файл
    только удалите все комментарии – после слешей должен сразу быть перенос строки. Этот вариант, пожалуй, самый быстрый из возможных.
    Ответ написан
    4 комментария
  • Как правильно работать с Promise?

    Alexandroppolus
    @Alexandroppolus
    кодир
    можно грузить параллельно, если они не зависят друг от друга и последовательность загрузки не важна

    await Promise.all([
        'https://learn.javascript.ru/article/promise-chaining/one.js',
        'https://learn.javascript.ru/article/promise-chaining/two.js',
        'https://learn.javascript.ru/article/promise-chaining/three.js',
    ].map(loadScript));
    
    one();
    two();
    three();
    Ответ написан
    Комментировать
  • Как правильно работать с Promise?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вопрос если разница в таких записях?

    Только в передаваемом значении:
    • resolve(script) передаст дальше по цепочке этот script (который никому не нужен, похоже).
    • script.onload = resolve передаст по цепочке объект события (тоже всем по барабану)

    почему такой ее вызов дает ошибку script.onload = resolve(script);
    потому, что нужна функция, которую вызовут позже, а не мгновенный результат её выполнения.
    Ответ написан
    Комментировать
  • Зачем нужен jQuery для AJAX?

    Adamos
    @Adamos
    jQuery с AJAX - прекрасный индикатор того, насколько устарела статья ;)
    Пока не сдох Ослик и встречались всякие маргинальные мобильные браузеры, обработку запросов к серверу приходилось подпирать костылями на всякий нестандартный случай, и jQuery с этим уверенно справлялся. Сейчас стандарт устоялся, повсеместно соблюдается и актуальность этой подпорки околонулевая.
    Ответ написан
    5 комментариев
  • Почему у функции в setInterval "пишем" одни скобки а не две вызывая ее при замыкании?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Потому, что в setInterval() первым аргументом надо передать функцию (он сам вызовет её потом),
    а «без setInterval» — для получения результата надо эту же функцию ещё и вызвать самим.

    длинный ответ
    Функцию в JavaScript можно «положить в переменную», передать как аргумент при вызове другой функции или получить как результат вызова ещё одной функции. Так же как "строку" или число 42.

    В этом выражении, смотрите, есть не 1, а целых 2 стрелочки:
    (param) => () => {
      console.log("Выхлоп!" + param);
    }
    Две стрелочки, значит, тут две функции. Одна вокруг второй. Первая, та, что снаружи, принимает аргументом param, и возвращает вторую функцию () => { console.log("Выхлоп!" + param); } Причём вернувшаяся функция «запомнила» значение param внешней обёртки и будет его использовать. Это обёртывание называется «Замыкание» или "closure".

    Теперь скобки при вызове. У нас матрёшка из двух функций: function(){ return function() {}; }

    Чтобы вызвать внешнюю, нужны первые скобки: ((param) => () => console.log(param))(6) – этот вызов внешней с аргументом 6 даст результатом внутреннюю функцию, которая запомнила значение param. И мы имеем на руках внутреннюю функцию.

    Чтобы вызвать внутреннюю, нужны вторые скобки: ((param) => () => console.log(param))(6)()

    Итого, две функции — два вызова — две пары скобок.

    В setInterval() первым аргументом надо передать не конечный результат, а функцию — её вызовут через некоторое время, не сразу. Тут передают внутреннюю функцию. Поэтому скобки всего одни: с одними скобками получаем внутреннюю функцию.
    Ответ написан
    1 комментарий
  • VUE 3 как убрать эту ошибку?

    @Kostik_1993
    Web Developer
    Если компонент состоит из одного слова например Header то принято писать его TheHeader, TheFooter
    Ответ написан
    3 комментария