Задать вопрос
  • Дискретное преобразование Фурье для WAV файла. Как огрубить результат?

    gbg
    @gbg
    Любые ответы на любые вопросы
    1) нет, понимаете неправильно. То что получилось - это комплексное число (в википедию, если не ясно), в котором спрятаны амплитуда и фаза самой низкой частоты в преобразовании. Дальнейшие элементы массива - это тоже комплексные числа с амплитудами-фазами.

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

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

    2) А тут надо почитать базовые учебники по ML. Нишант Шакла, написал хороший, например.
    Ответ написан
    1 комментарий
  • Почему не работает sticky?

    Не знаю почему, но методом исключения заметил, что это свойство не работает из-за наличия следующего правила
    html, body {
        overflow-x: hidden;
    }

    P.S. Если задать его не обоим тегам сразу (HTML и body), а только одному (например, только body), то блок с position:sticky работает корректно
    5d8600e7e43c1399885343.png

    Результат, если это правило закомментировать (всё работает)
    https://codepen.io/hisbvdis/pen/BaBvKaa
    Ответ написан
    2 комментария
  • Bash-скрипт: как заменить данную строку в файле на переменную?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В данном конкретном случае намного более адекватным было бы использовать include в nginx.conf отдельного конфига, который генерировать скриптом.
    Ответ написан
    Комментировать
  • Какие права выставить на файл sqlite базы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Лучше не "ставить из пакета". Это лишает смысла проверку целостности пакета по контрольным суммам, усложняет установку обновлений. Поэтому правильнее иметь некую "эталонную" базу, которую копировать в целевое размещение. Как вариант, в пакете держать .sql (.sql.gz) для инициализации базы. Саму инициализацию делать скриптом (как initdb в postgres) или описать в инструкции что куда скопировать/выполнить. К слову, для процесса обновления тоже может потребоваться механизм, так как структура данных может меняться в новых версиях. Процесс первичной инициализации и последующего обновления можно сделать частью post-install скрипта пакета.

    Базу следует класть не в /usr (в классической теории UNIX-систем /usr может вообще монтироваться в read-only, например, по nfs), а в /var, лучше /var/lib/имя_программы. Сделать специальную системную группу без пользователей вполне нормально, так делают. В инструкции следует описать, что пользователей надо в неё добавлять. Соответственно, на файл права 660, на каталог 770.

    Если пользователи будут работать с этой базой параллельно-одновременно, а не строго по очереди, то потребуется ещё механизм блокировок. В этом случае лучше рассмотреть полноценную СУБД или хотя бы вынести работу с базой в отдельный сервис, с которым программа будет взаимодействовать.
    Ответ написан
    7 комментариев
  • Как отсортировать массив пар [ключ, значение]?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sorted = (arr, key) => arr
      .map(n => [ key(n), n ])
      .sort(([a], [b]) => a < b ? -1 : +(a > b))
      .map(n => n[1]);

    Так как сортировка сбивается из-за наличия нечисловых символов в начале некоторых строк, просто вырежем их:

    const sortedArr = sorted(arr, n => n[0].replace(/^\D+/, ''));

    Если же значения могут быть не только двухзначными, то сравнивать их как строки уже нельзя. Делаем из них настоящие числа, считаем сумму; если второе слагаемое отсутствует, используем первое повторно:

    const sortedArr = sorted(arr, n => {
      const d = n[0].match(/\d+/g);
      return +d[0] + +d.at(-1);
    });
    Ответ написан
    Комментировать
  • Как исправить нечитаемое имя отправителя и получателя почтового сообщения?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ?utf-8? - исходная строка была в кодировке UTF-8.
    ?B? - закодировано в Base64.
    0KnQtdC/0LAg0KHQзtdGA0LPQtdC5 - сама строка в Base64.
    print base64_decode('0KnQtdC/0LAg0KHQзtdGA0LPQtdC5'); // Щепа Сергей

    Кроме Base64 может встретиться кодировка Quoted-printable, обозначаемая как ?Q?. В этом случае заголовок будет выглядеть как
    ?utf-8?Q?=D0=A9=D0=B5=D0=BF=D0=B0 =D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?=

    Ну и кодировка исходной строки может быть любая. Для перекодирования можно использовать iconv().
    Ответ написан
    Комментировать
  • Нужно ли открывать файлы стилей в роботс?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Вот вопрос - есть ли в этом логика и насколько сильно влияет на SEO?
    Любой современный робот оценивает юзабилити, в частности скорость загрзки, контент лэйаут шифтинг, расположение ключевых элементов и т.д., что можно посмотреть в том же гугл пэйджспид. Ясное дело что без цсс и жс он этого просто не увидит. И да, гугл учитывает все это в ранжировании.
    Ответ написан
    Комментировать
  • Существуют ли компании, где нет перерывов в работе?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В нормальных компаниях не следят с секундомером за работой сотрудников. Если от вас ждут нажимания кнопок 40 часов в неделю, а не выдачу запланированного объёма продуктов/решений, то надо бежать.
    Ответ написан
    1 комментарий
  • Существуют ли компании, где нет перерывов в работе?

    Natebash
    @Natebash
    React, Vue, Angular, Navite JS, Python / Node JS
    Похоже на описание концлагеря) Сейчас большинство айтишных компаний практикуют удаленную работу, тем самым снижая финансовую нагрузку(условие наличия большого офиса, снеков, и прочего). У адекватной компании - вы закрываете таски - вы молодец, когда вы их закрываете - ваше дело. У нас условие - 4 часа пересечения общего времени с командой. К примеру я встаю в 5, в 6 уже на работе, в 2 заканчиваю работать. Далее "свободное время"

    Ищите компанию где не будет такого идиотизма)
    Ответ написан
    1 комментарий
  • Как защитить вёрстку своего макета от "плагиата"?

    DevMan
    @DevMan
    никак. принять как данность.
    Ответ написан
    Комментировать
  • Как убрать все вендорные префиксы?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Прогоните CSS через Autoprefixer с параметром:
    >100%

    Тем самым получите на выходе вот такой результат:
    5c2ec261e28bc331351044.jpeg
    Ответ написан
    1 комментарий
  • Какой тег использовать, что бы получить структуру?

    type Event struct {
        Preview     Image      `json:"preview"`
        Images      []string   `json:"images"`
    }


    Ну или если очень хотите отдельный тип, то:
    type Image string
    Ответ написан
    Комментировать
  • Как увеличить растояние подчеркивания у ссылок, которые состоят из нескольких строк?

    trushka
    @trushka
    можно с помощью linear-gradient. Только в ссылку span вложить пийдётся, чтоб растянуть по высоте строку, не увеличивая шрифт. Line-height только расстояние между строками увеличивает..
    https://jsfiddle.net/thu0wxba/
    Ответ написан
    1 комментарий
  • Как отключить Tab на сайте?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Не рекомендую так делать. Многим удобнее делать навигацию по сайту с помощью Tab, чем мышью. А ты просто ее отключишь

    window.onkeydown = evt => {
        if (evt.key == 'Tab') {
            evt.preventDefault();
        }
    }
    Ответ написан
    4 комментария
  • Как внедрить в Го проект Vue компоненты?

    Fragster
    @Fragster
    помогло? отметь решением!
    Делай на го api (rest или json rpc), а на vue фронт, который взаимодействует с этим api. прям совсем в разных папках и независимо друг от друга.
    Ответ написан
    9 комментариев
  • Как ставить nginx, в контейнер или просто на сервер?

    akelsey
    @akelsey
    Все предложенные варианты имеют право на жизнь.
    Но я за контейнеризацию, т.к. плюсы размещения в контейнере очевидны, вся конфигурация приложения при следовании лучшим практикам находится в одном месте, например:
    /opt/docker-compose/
    в котором есть список ваших приложений, например:
    nginx-reverse/
    certbot/
    nodejs-front/
    nodejs-back/
    something-else/

    Такая компоновка обеспечит более легкий деплоймент в пайплайне (ci/cd), да и ручной перенос с хостинга на хостинг. Локальное тестирование тоже проще осуществить.
    Ответ написан
    1 комментарий
  • Как стим защищает игру от пиратского распостранения?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Ответ написан
    Комментировать
  • Как убрать задержку на сенсорных экранах при mousedown?

    @NQUAREx Автор вопроса
    document.addEventListener('touchstart', (event) => {
    	if (event.changedTouches[0].clientX ...) {...}
    })
    Ответ написан
    Комментировать
  • Есть ли какой монитор изменения прав доступов к папке и файлам?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Чаще всего такое бывает из-зза совокупности неочевидных проблем в конфигурации логов, скриптов запуска логгируемуго софта и сиетемы ротации или бэкапа логов.
    Например, описанная вами ситуация может быть порождена следующим стечением ошибок и обстоятельств.
    Бывает, что на бэкенде в один и тот же лог-файл пишут несколько скриптов. Это уже конкуренный доступ к файлам и не есть хорошо. Такое случается, когда по образцу одной проги с логгированием потом делают другую, а конфигурация логгирования не предусматривает такую ситуацию. Вот когда два таких скрипта работают и логи в конфликтный файл пишутся не часто, могут случиться такие проблемы.
    Ещё один из таких скриптов может запускаться под рутовыми правами, а другой после него под пользовательскими. Если запущщеный от рута скрипт вызвал ротацию лог-файла, то новый файл мог создаться уже с рутовыми правами по умолчанию, а это значит, что другой скрипт (или этот же, но запущеный от обычного пользователя) уже не сможет в него писать.

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

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

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

    Итак. Перым делом смотрите какие процессы пишут файл, какие скрипты трогают эти файлы (бэкапы. ротация), посмотрите в crontab, посмотрите конфигурацию сотфа в плане логов и всё должно проясниться. Делать систему мониторинга за изменениями в файловой системе возможно, но это ректальная тонзиллэктомия получаетя какая-то...

    UPD:
    Почему-то не обратил внимания, что речь о логах mysql. Но всё по-прежнему: конфиг логгирования и ротации, распсиание и механизм ротации и бэкапа, поиск по конфигам фрагментов этого пути на предмет аномалий и повторов.
    Ответ написан
    Комментировать
  • Где принято писать media-запросы при работе с SASS?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Староверы пишут в отдельном файле.
    Потому что они так привыкли со времен, когда препроцессоров не было.
    Или потому что не знают об автоматическом комбинировании запросов при сборке, боясь раздувания кода.

    Нормально – это верстать максимально независимыми блоками, а отсюда следует единственный правильный вывод – стилевое описание блока должно быть целиком в одном месте.
    Ответ написан
    6 комментариев