• Как преобразовать звук в символы?

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

    Если нет денег или не особо играешь в игры, дешевле взять процессор со встроенным GPU (интегрированная графика).
    Ответ написан
    4 комментария
  • Как в php сравнить два огромных txt файла до 100гб, удалив дубликаты?

    На POSIX системах можно использовать fgrep:
    $ cat /tmp/file1.txt
    aaa
    bbb
    ccc
    $ cat /tmp/file2.txt
    bbb
    123
    aaa
    $ fgrep -f /tmp/file1.txt /tmp/file2.txt
    bbb
    aaa


    Так что на PHP как-то так:
    $output = shell_exec('fgrep -f /tmp/file1.txt /tmp/file2.txt > /tmp/dups.txt');


    Однако, если требуется выполнять какие-то дополнительные манипуляции, тогда, возможно, лучше сразу импортировать в СУБД.

    Добавлено:
    упустил факт, что помимо дубликатов нужно оставить и неповторяющиеся значения. Тогда так:

    $ sort -u /tmp/file1.txt /tmp/file2.txt
    123
    aaa
    bbb
    ccc


    $output = shell_exec('sort -u /tmp/file1.txt /tmp/file2.txt > /tmp/dups.txt');
    Ответ написан
    Комментировать
  • Meson.build:2:0: ERROR: Could not execute Vala compiler "valac"?

    Нужно установить пакет с компилятором Vala:
    sudo apt install valac
    Ответ написан
    Комментировать
  • Как правильно создавать большие архивы данных?

    1. Ничего особого не требуется
    2. Без разницы
    3. Имеет смысл хранить хэш-сумму (MD5, SHA1) рядом с файлом и сверять архивы по ней для удостоверения целостности.
    4. Возможно, разбивать потенциально большие архивы на тома, скажем, по 20-50 МБ, чтобы в случае обрыва связи было проще перезалить в облако.
    5. Очень даже может быть. Во времена магнитных накопителей имело смысл создавать архивы с некоторыми дополнительными служебными данными, используемыми при восстановлении файлов в случае повреждения, вызванными размагничиванием или при записи. Сегодня это неактуально и, в основном, ненадежный канал связи может являться причиной битых архивов. При использовании программ для синхронизации данных не исключено, что при обрыве связи не работает как положено механизм повтора.
    Ответ написан
    Комментировать
  • Как распаковать все архивы внутри папок с сохранением структуры?

    Bash:
    tar xf названиеархива.tar.gz
    # затем распаковываем все .gz в поддиректориях на своих местах:
    find . -type f -name '*.gz' -exec gunzip {} \;
    Ответ написан
    Комментировать
  • По какой логике в редисе работает получение всех записей?

    scan <cursor> MATCH user:* COUNT 100
    вместо <cursor> выставить 0 и дальше изменять согласно полученному курсору.
    https://redis.io/commands/scan/
    Ответ написан
    Комментировать
  • Как искать зашифрованные данные через like?

    Если верно понял требования, то вот мои мысли.

    Использовать Transparent Data Encryption (TDE)

    Выполнить шифрование данных на уровне таблиц:
    https://www.postgresql.org/docs/current/encryption...
    https://dev.mysql.com/blog-archive/controlling-tab...

    То есть расшифровывание будет происходить на уровне СУБД, а с точки зрения приложения - обычные запросы LIKE.
    Ответ написан
    1 комментарий
  • Как добавить файлы в архив по маске через 7zip?

    Скрипт с циклом for по маске *.docx , в каждом найденном файле взять первый символ (Unicode) файла, приставить в конце .7z и получится имя файла, куда нужно добавить этот документ в архив. Ну и составить команду добавления в архив. Читать справку по cmd скриптам, 7z.
    Ответ написан
    Комментировать
  • Как искать Видео на Youtube по содержащемуся там слову?

    Необходимо, чтобы сервис Youtube извлекал слова из видеопотока и сохранял эти метаданные, добавлял в индекс для последующего поиска при помощи языка запросов через REST API. Сложность в огромных затратах энергии, уходящих на анализ такого массива видео, при недостаточном качестве извлечения текста для множества языков.

    Чтобы создать такой поисковый сервис по Youtube, необходимо определить появление новых видео, скачивать по сети огромное кол-во данных, затем анализировать видео своим алгоритмом и, по сути, создать дополнение к Youtube на своих мощностях.
    Ответ написан
    3 комментария
  • Как более лаконично написать линию кода с puts?

    ENTRIES = %w[name bet game cf href]
    # заполним произвольными данными
    events = ENTRIES.each_with_object({}) {|name, h| h["BK1_#{name}"] = rand(10)}
    p ENTRIES.map {|entry| "BK1_#{entry}"}
    puts *ENTRIES.map {|entry| events["BK1_#{entry}"]}

    дальше сам
    Ответ написан
    Комментировать
  • Как дамп данных windows 7 перенести на windows 10?

    С помощью Laplink PCmover и подобных программ.
    Ответ написан
    Комментировать
  • Почему приходит не полностью декодированый ответ?

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

    Получаем такие данные
    [:open]
    I, [2022-12-31T13:01:18.377633 #12831] INFO -- : ==> message size 135
    "y\x00\x00\x01\x87\x00\x01\x00c\x00\x05\x17\x0E\x01\xF4\x01\x02,\x01\x03,\x01\x04\xC8\x00\x05d\x00\x062\x00\a,\x01\b2\x00\t\x1E\x00\n\x14\x00\v\n\x00\f\x00\x00\r\x00\x00\x0E\x00\x00\x03\x01\x00\x04\x00\x00\x00\x02\x01\x00\x04\x00\a\x01\xEA\x01\xEA\x01\x02\x19\x04\x19\x04\x03\x10\x00\x10\x00\x04\xB1\x03\xB1\x03\x05:\x00N\x04\x06\x00\x00\x12\x04\a"
    I, [2022-12-31T13:01:18.378144 #12831] INFO -- : ==> message size 1511
    "\x8A\x04\x01\x03\r\xD6\x00\x00\x00\x01\xD6\x00\x00\x00\x87\x13\x91\x00\x80\\\xB0c\x12\x00\u0411\u0430\u0440\u0441\u0435\u043B\u043E\u043D\u0430\x10\x00\u042D\u0441\u043F\u0430\u043D\u044C\u043E\u043B\x01\v\x00\x00\xFE\n\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x00\xFE\xB4\x92\x00\xA0x\xB0c\e\x00\u041C\u0430\u043D\u0447\u0435\u0441\u0442\u0435\u0440 \u0421\u0438\u0442\u0438\x0E\x00\u042D\u0432\u0435\u0440\u0442\u043E\u043D\x11\x00\x00\x000"
    I, [2022-12-31T13:01:18.378693 #12831] INFO -- : ==> message size 3004
    "\x9C\x04&g\x00\x00\x02\x00\x007\x00https://winline.ru/resources/images/app_topbar/..."
    I, [2022-12-31T13:01:18.453962 #12831] INFO -- : ==> message size 24931
    "\x10\x00e\x00\x00\x004\x00\x00\x00c\x00\x00\x00\x00\x00\x02\x00RT\b\x00FullTime\v\x00RegularTime\b\x00HalfTime\x06\x00Period\b\x00OverTime\a\x00Penalty\x01\x00Z\x01\x00W@\x00\x00\x00c\x00\x00\x00\x00\x00\x02\x00R"
    I, [2022-12-31T13:01:18.848721 #12831] INFO -- : ==> message size 198262
    "\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01L\x01\x00\x00\x00\x00\x00\x00\b\x00Bulgaria\x17\x00\x00\x00\x01\a\x00\x02\x00\x00\x01C\x00\x00\x00\x00\x00\x00\x00\x06\x00Greece\x0F'\x00\x00\x01\v\x00\x05\x00\x00\x01n\x01\x00\x00\x00\x00\x00\x00\a\x00Vietnam\x0F'\x00\x00\x02\x03\x00"
    I, [2022-12-31T13:01:18.860996 #12831] INFO -- : ==> message size 22
    "\a\x00"
    I, [2022-12-31T13:01:18.861229 #12831] INFO -- : ==> message size 786
    "\x9D\x04e\x00\x00\x00\x9A\x96\x01\x00\x18\x00\x00\x00\xE0\xFD\x80d\x11\x00\x00\x00\b\x00\x00\x00\x10\x90\xFBc\x8D\xD6\x00\x00\b\x00\x00\x00\x90?\x17d\f\x00\x00\x00}\x00\x00\x00P\xFB|d\x10\x01\x00\x00\x12\x00\x00\x00PY\x97d\\\x04\x00\x00\n\x00\x00\x00\xD0cvd^\xD6\x00\x00\x1C\x00\x00\x00\xA0\x80\x98d\x97 \x00\x00&\x00\x00\x00\xF0"
    I, [2022-12-31T13:01:18.861596 #12831] INFO -- : ==> message size 6961
    "\x04\x00\x0F\x00\x00\x00\x18\x00\x00\x00\a\x02\x00\x00\x02V\x00\x00\x00\x01\x00\x00\x00\n\x00\x00\x00\x89\x01\x00\x00\x00\x13\x00Club Friendly Games\x02\n\x00\x00\x00\x0F'\x00\x00\x02\x1C\x10\x00\x00\x02\x00\x00\x00@B\x0F\x00p\x00\x00\x00\x00\x10\x00Super Lig, Women\x02"
    I, [2022-12-31T13:01:19.087934 #12831] INFO -- : ==> message size 9567
    "\x04\x00\x13\x00\x00\x00#\x00\x00\x00\xD6\x02\x00\x00\x02S\x02\x00\x00\x02\x00\x00\x00@B\x0F\x00p\x00\x00\x00\x00\x04\x00TBSL\x02\x01\x00\x00\x00\x00\x00\x00\x00\x02\xD7\x02\x00\x00\x02\x00\x00\x00@B\x0F\x00q\x00\x00\x00\x00\x03\x00NBL\x02\x0F'\x00\x00\x0F'\x00\x00\x02[\x03\x00\x00\x02\x00\x00\x00@B\x0F\x00q\x00\x00\x00\x00\x04\x00"
    I, [2022-12-31T13:01:19.089121 #12831] INFO -- : ==> message size 22
    "3\x00"
    I, [2022-12-31T13:01:19.380693 #12831] INFO -- : ==> message size 43
    ",\x00l\x00\x00\x00\x0F\x00149.106.242.182"
    ^C[:close, 1006, ""]
    В некоторых сообщениях есть общие заголовки данных, например, "\x04\x00".

    чуток модифицированный код

    require 'faye/websocket'
    require 'eventmachine'
    require 'permessage_deflate'
    
    require 'logger'
    LOGGER = Logger.new($stdout)
    
    def dump_data(data, limit = 100)
      # puts data.unpack('H*')
      puts data[0, limit-1].dump
    end
    
    EM.run do
      ws = Faye::WebSocket::Client.new(
        "wss://wss.winline.ru/data_ng?", 
        [],
        # :headers => headers, 
        :extensions => [PermessageDeflate]
      )
    
      ws.on :open do |event|
        p [:open]
        ws.send "lang"
        ws.send "AQ==" 
        ws.send "data" 
        ws.send "WINLINE" 
        ws.send "getdate" 
        ws.send "no_fordata" 
    
      end
    
      ws.on :message do |event|
        LOGGER.info "==> message size #{event.data.length}"
        gz = Zlib::GzipReader.new(StringIO.new(event.data.pack('C*')))    
        dump_data(gz.read)
        gz.close
      end
    
      ws.on :close do |event|
        p [:close, event.code, event.reason]
        ws = nil
      end
    end
    Ответ написан
    1 комментарий
  • Что может писаться в персистентное хранилище в rabbitmq?

    1. Проверить, работает ли обработчик очереди, не падает ли из-за ошибок
    2. Проверить наличие ack обработчиком. https://www.rabbitmq.com/confirms.html
    3. Проверить темп публикации сообщений и его потребления. Если недостаточный у обработчика, то оптимизировать время обработки и добавить дополнительный, при необходимости.
    Ответ написан
    Комментировать
  • Как работает перенаправление вывода скрипта python?

    Можно обвернуть системный вызов в async функцию и использовать await.
    https://realpython.com/async-io-python/#the-asynca...

    Добавлено:
    а нельзя ли просто сделать вывод в stdout и поточное чтение с вывода:
    python prog1.py | python prod2.py
    ?
    Ответ написан
    Комментировать
  • Должен ли программист выполнять роль девопса на сервере заказчика?


    а договора небыло. просто был прислан текстовый файл с заданием и я ответил что сделаю это.

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

    Так что проще всего максимально оградить от проблем изначально, чтобы избежать недопонимания, как описал Владимир Коротенко . Ну и финансовая сторона. И действовать поэтапно, не выполняя работы без оговоренной предоплаты
    Сроки и всё такое - должно быть описано, чтобы всегда был пункт
    б) а если "так", то будет "вот так".

    Это можно писать простым языком, не юридическим. Никому не хочется заниматься с судами и многие вопросы лучше заранее решать за их пределами.
    Так что условия доставки ПО нужно хорошо обговорить. Кому-то достаточно доступа к GitHub,а кому-то нужно развернуть прямо в продакшен сервере. И даже на Маке ))
    Ответ написан
    2 комментария
  • В чем отличие float/double и decimal?

    https://floating-point-gui.de/

    Статья: What Every Scientist Should Know About Floating-Point Arithmetic
    Ответ написан
    Комментировать
  • Что использовать для синхранизации данных?

    По описанию задачи должна подойти реализация PouchDB протокола синхронизации Apache CouchDB. На практике ещё не пробовал.
    Ответ написан
    Комментировать
  • Почему у меня фото становятся розовыми после того как открываю файл?

    Возможно, файлы JPEG повреждены. Розовый оттенок - из-за нарушений при декодировании цветового пространства YCbCr.

    Добавлено:
    Или что-то не так с программой-просмотрщиком. Стоит проверить в нескольких других и если ещё где-то история повторяется, то, возможно, что-то не так со структурой (форматом) JPEG.
    Ответ написан
    Комментировать
  • Как с помощью Flask сделать динамический вывод данных из txt файла?

    Клиент может получать информацию по SSE порциями строк из файла. Для этого можно открыть процесс, запустив tail -f file.txt и читать построчно с stdout. Каждую строку или сразу несколько отправлять в стрим клиенту.
    https://man7.org/linux/man-pages/man1/tail.1.html
    Ответ написан
    Комментировать