• Как написать автоматический планировщик смен?

    profesor08
    @profesor08
    Было бы гораздо проще, предоставить им сайт, где у них будет видна информация о том, кто и когда записался. И пусть самостоятельно записываются в свободные часты. Таким образом можно будет генерировать им график хоть до пенсии, либо пусть самостоятельно записываются в любое свободное время, но уже без генерации, это предпочтительнее. Более того, они смогут спокойно поменяться, договорившись между собой. И никакого рандома, так как можно нарандомировать так, что один будет всю неделю работать, а другой всю неделю отдыхать. Так-же отсечется вагон вопросов и непонимания.
    Ответ написан
    2 комментария
  • Как в выпадающий список добавить вещественные числа?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    Если вы готовы перейти на формат числа с точкой в качестве разделителя дробных чисел, можете сменить региональные настройки таблицы с «Россия» на «Соединённые Штаты».

    P.S. Так себе вариант, должен быть более правильный.
    Ответ написан
    Комментировать
  • Как узнать список файлов которыми пользуется программа?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    API Monitor - если знаете winapi - возможности программы безграничны. Можно ставить выполнение программы на паузу, менять параметры функций на лету. Также можно отследить к каким файлам конкретная программа имеет доступ, и с какими флагами, также можно программе подсунуть другой файл во время выполнения. Но на первый взгляд может показаться немного сложновата.

    Ну а если нужен простой, как 2 копейки файловый монитор, тогда гуглите windows filemon или windows file monitor.
    Ответ написан
    Комментировать
  • Как узнать список файлов которыми пользуется программа?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Раньше для этого использовался FileMon. Сейчас Майкрософт его прибил (но на сторонних сайтах ещё можно найти) и предлагает использовать Process Monitor.
    Ответ написан
    Комментировать
  • Как лучше сделать такой круглый вырез в блоке?

    Ankhena
    @Ankhena Куратор тега Вёрстка
    Нежно люблю верстку
    Обычный радиальный градиент
    Ответ написан
    Комментировать
  • Как рендерят видео с множеством Мальдеброта?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    GLSL вероятнее всего, решит вашу проблему. При должном навыке прыжков с бубеном, можно даже организовать сжатие итогового видео на видеокарте.
    Ответ написан
    Комментировать
  • Как рендерят видео с множеством Мальдеброта?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    На шейдерах можно сделать
    https://www.shadertoy.com/view/4df3Rn
    Ответ написан
    Комментировать
  • Существует ли функциональная библиотека для соединения JSON?

    profesor08
    @profesor08 Куратор тега JavaScript
    const a = {
      a: 123,
    };
    
    const b = {
      b: 234,
    };
    
    // ой, библиотека не понадобилась
    const c = {
      ...a,
      ...b,
    };
    Ответ написан
    2 комментария
  • Обязательно нужно минифицировать файлы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Минификация файлов нужна для ускорения скачивания файла на компьютер пользователя, обязательно это делать или нет - выбор руководителя проекта или другого ответственного за проект. С точки зрения СЕО специалиста будет "однозначно да", программисту же, как минимум до полной "полировки" файлов, удобнее работать с развернутой версией.

    В общем случае это крайне желательно(экономит время/энергию/байты, спасает птичек и лисичек), но в некоторых случаях не критично (например сайт малопосещаемый и файлы не большие).
    Ответ написан
    2 комментария
  • Как остановить setInterval из функции?

    @twolegs
    setInterval возвращает id таймер, который вам следует сохранять в каком-нибудь поле/переменной. А далее просто clearInterval с сохранным id.
    Ответ написан
    Комментировать
  • Почему не получается сравнить отрицание в switch?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    но тогда это больше похоже на баг, чем на фичу...

    Как обычно. Новички вместо попытки отладить свое поделие начинают обвинять компилятор/интерпретатор/etc.

    /sarcasm on
    Конечно, это же куча опытных разработчиков, которые много лет пилят V8, допустили такой "баг".
    И никто в мире кроме accountnujen его не нашел!
    /sarcasm off

    А если серьезно - научитесь мыслить критически и подумайте, вероятность чего больше:
    1. Вероятность того, что разработчики V8 допустили такой "баг".
    2. Вероятность того, что accountnujen (который даже забыл break написать после console.log ) банально не знает о таком понятии как приоритет операторов.

    switch(true) {
      case 'language' in localStorage:
        console.log('язык есть');
        break;
      case 'theme' in localStorage:
        console.log('тема есть');
        break;
      case !('theme' in localStorage):
        console.log('темы нет. загрузка дефолтной темы');
        // no break
    }


    P. S.
    Хотя я даже не уверен, что вы понимаете что делаете и зачем вам switch (вы понимаете как он работает?).
    Ответ написан
    1 комментарий
  • Почему не получается сравнить отрицание в switch?

    @Asokr
    Так как вы хотите сделать не получится если отсутствует break, проверка не выполняется - отрабатывают все инструкции после первого true.
    Ответ написан
    Комментировать
  • Как узнать, чем закодирована строка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    console.log(atob('aCNVNGI4Tk9WSU5LSU1mbnYvRA=='));
    // "h#U4b8NOVINKIMfnv/D"
    
    console.log(atob('aCNVNGI4cGljb2RpY29tMjBNZm52L0Q='));
    /// "h#U4b8picodicom20Mfnv/D"
    Ответ написан
    Комментировать
  • Как узнать, чем закодирована строка?

    Base64
    Ответ написан
    Комментировать
  • Как ограничить количество одновременно исполняемых Promise?

    @GrayHorse
    Это называется семафором (Semaphore).
    class Semaphore {
        constructor(max = 1) {
            if (max < 1) { max = 1; }
            this.max = max;
            this.count = 0;
            this.queue = [];
        }
        acquire() {
            let promise;
            if (this.count < this.max) {
                promise = Promise.resolve();
            } else {
                promise = new Promise(resolve => {
                    this.queue.push(resolve);
                });
            }
            this.count++;
            return promise;
        }
        release() {
            if (this.queue.length > 0) {
                const resolve = this.queue.shift();
                resolve();
            }
            this.count--;
        }
    }


    const semaphore = new Semaphore(10);
    for (const url of urls) {
        await semaphore.acquire();
        void downloadUrlSynchronized(url, semaphore);    
    }
    
    async function downloadUrlSynchronized(url, semaphore) {
        const resp = await fetch(url);
        const blob = await resp.blob();
        semaphore.release();
        // const name = new URL(url).pathname.slice(1);
        // downloadBlob(blob, name, url);
    }

    Загрузка (fetch) будет не больше 10 в один момент, что собственно и требовалось.

    ---
    На примере 3:
    61ee50a555b4a690601785.png
    Ответ написан
  • Чем плох md5(md5($pass)) для пароля?

    @galaxy
    1. Нет соли
    2. Слишком быстрый
    Ответ написан
    Комментировать
  • Чем плох md5(md5($pass)) для пароля?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Иногда смотришь на вопрос и не понимаешь, о чем он.
    Судя по вопросу и цифрам в нем, автор и так уже осведомлен о правильных способах хэширования и должен уже знать ответ на свой вопрос.

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

    Возможно, непонимание происходит оттого, что существует не один, а несколько векторов атаки на пароль.
    1. Поиск хэша по "радужным таблицам" (rainbow tables): огромным базам данных, где собираются заранее посчитанные хэши для любых возможных строк.
    2. Метод грубой силы (bruteforce): перебирать все комбинации символов и применять к ним хэширующую функцию до тех пор, пока она не вернёт искомый хэш.
    3. Поиск по словарю. Похож на брутфорс, но перебор не всех возможных значений, а всего нескольких тысяч самых популярных паролей, типа "123", "password" и пр.
    phpfaq.ru/tech/hashing

    И только одного элемента недостаточно, а нужны все в комплексе:
    - Хэширующая функция должна иметь большую вычислительную сложность, чтобы усложнить подбор перебором. по этой причине md5() не подходит
    - Хэш должен быть посолен уникальной солью, чтобы нельзя было, затратив 1 раз кучу вычислительных усилий, заранее построить хэши для любых комбинаций символов. По этой причине фарш без соли - деньги на ветер.
    - Пароль не должен быть слишком простым, иначе даже медленный перебор его раскроет. Этот момент тоже надо учитывать
    Ответ написан
    Комментировать
  • Как найти два или больше максимальных значения?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    Допустим, в диапазоне A2:A11 у вас числа от нуля до девяти.

    Формула =ArrayFormula(LARGE(A2:A11;{1;2;3}))выведет в столбец три наибольших значения:
    9
    8
    7

    Для вывода в одной ячейке через запятую: =ArrayFormula(JOIN(", ";LARGE(A2:A11;{1;2;3})))
    Ответ написан
    Комментировать
  • Обязательно ли читать книгу по языку/технологии что бы быть тру и продвинутым кодером?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вы не найдёте ни одного авторитетного программиста с мировой известностью, который бы утверждал, что курсы и видео-уроки лучше книг. Обычно это утверждают либо профаны, оправдывающие своё нежелание читать, либо авторы курсов, делающие деньги на лентяях и глупцах. И я лично за 18 лет в отрасли встретил множество программистов, но ни одного хорошего, выучившегося по курсам и видео-урокам.

    Видеокурс может запилить любой дурак. Чтобы написать книгу, нужно иметь авторитет достаточный для издательства. Кроме того, текст пройдёт редактуру нескольких профессионалов. Поэтому знания в книгах качественные и систематизированные. Для начинающего это очень важные качества.

    К тому же, после достижения профессионального уровня достаточного чтобы называться специалистом, вы обнаружите, что необходимые на этом уровне знания можно почерпнуть только из документации. То есть всё равно придётся читать. Много и часто.

    Наконец, постоянная практика чтения неизбежно приводит к увеличению скорости чтения. И наступает момент когда прочитать учебник будет в 10 и более раз быстрее, чем просмотреть видеокурсы по той же теме и в том же объёме.

    Кроме того, чтение развивает абстрактное мышление - основной инструмент разработчика.
    Ответ написан
    16 комментариев