Задать вопрос
  • Очень плохо работает мобильный интернет?

    @rPman
    выглядит так будто при нагрузке поднимается температура, и отходит контакт антены на плате, если я верно понимаю это лечить нереально (оно все там на плате сразу)

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

    @rPman
    Существуют x86 материнки со встроенным и не только процессором формфактора mini-itx/nano-itx/pico-itx, у меня лежит mitx 2014-го года с двумя гигабитными портами и встроенным intel j 1800, по скорости она быстрее любой современной малинки, стоила дешевле тогдашней малинки и аналогов (у них всегда цена завышена). При этом это стандарт ATX для подключения питания (можно подключить огромный по меркам материнки стандартный atx блок питания), стандартные порты для RAM, для подключения плат расширения типа GPU, usb/hdmi/dsub/dvi/... это x86 софт работает весь, есть адекватный биос и адекватные возможности.

    в наших текущих закрытых реалиях достать современное железо сложно, только если китайцы что предложат. Гугли aliexpress 2 ethernet mini itx или nano itx, предложений там тьма
    Ответ написан
  • Как проверить наличие слова в файле txt (fs)?

    @rPman
    Что значит сверять, давать ответ есть/нет? слово это строка с любыми символами (пробелы, знаки препинания) или набор букв на каком то языке с игнорированием регистра и вспомогательных символов (встречаются в других языках), а кодировка у файла?

    Если просто строка без учета всего иного, то читаешь файл в память fs.readFileSync(filePath, 'utf8'); где utf8 - ожидаемая кодировка файла. Наличие слова в этой строке можно простым регулярным выражением new RegExp(`\\b${targetWord}\\b`, 'gi') и методом regexp.test(строка_с_содержимым_файла). Соответственно fs подключить require('fs').

    Если пользователь будет вводить что угодно (а не слово, например символы \ которые часть регулярного выражения), то можно ограничить его ввод дополнительным регулярным выражением, проверяя и ругаясь соответственно.
    Ответ написан
    Комментировать
  • Скачать все видео автора тик ток?

    @rPman
    Видео отлично качает консольная утилита yt-dlp (устанавливать в linux из pip install в windows с офф githubоно же умеет качать и видео пользователя но именно с тикток это сейчас сломано (само собой тикток борется с качальщиками), я не пробовал самый последний релиз возможно пофиксили, попробуй)

    Еще момент, с российских ip тикток кастрирует и ломает выдачу, скрывает популярных авторов в т.ч. из поиска (вот пример @wannabeteacher поищи как пример), поэтому подбирай локацию хостинга скриптов.

    p.s. у тикток есть api, просто разберись с ним и используй
    https://developers.tiktok.com/doc/tiktok-api-v1-vi...
    Ответ написан
    2 комментария
  • Как ограничить доступ к странице сайта на устройстве пк браузеров?

    @rPman
    Открывамем гугл, пишем github browser mobile detector
    получаем ссылку на почти сотню проектов, отсортированных по популярности, первый какраз на php
    Ответ написан
    Комментировать
  • Lvm versus fsck - как решить проблему курицы и яйца?

    @rPman
    в linux есть btrfs и zfs файловые системы, с функционалом управления разделами и дисками. Первый хоть и рекомендован к работе но имеет незначительные проблемы (я не встречал но они заявлены), второй имеет высокие требования к ram и дает много накладных расходов на диски, и не рекомендуется для hdd (точнее можно, если там есть дисковый кеш большой, встроенный или в контроллере).

    lvm однозначно на помойку, его снапшоты это тормозной ад, когда как btrfs/zfs они бесплатны.

    К сожалению переход lvm+ext4 -> btrfs можно сделать только через backup format restore. В похожих ситуциях я несколько раз делал последовательное уменьшение разделов, в пределах свободного места на диске, переносил данные снова уменьшал... Долгий и опасный процесс (вероятность потери данных при сбое во время упаковки и сдвига раздела - высокая) но когда вообще нет возможности сделать оперативно бакап и восстановления - подойдет. Но лучше выбирай бакапы, они так и так нужны.

    Недостатки btrfs/zfs там же где и их достоинство. Это Copy-On-Write файловые системы, каждая следующая запись происходит в новое место, базы данных в таких случаях сильно фрагментируются (на самом деле не на столько все плохо но на hdd это заметно), и само собой есть возможность это отключить для выбранных каталогов (снапшоты само собой нормально перестанут работать с этими файлами).

    upd. Отключи резет физически и научи комбинации ctrl+shift+alt+prnscr.. +u, ...+b,... +s. prnscr отжимать и нажимать следующую букву, не отпуская ctrl+shift+alt, затем отпускать все кнопки и повторять но последний символ другой.
    u - перемонтирует все маунты принудительно в readonly
    s - запускает sync (формально он не нужен, так как после readonly он уже работает, но я могу придумать комбинации конфига ext4 и опций монтирования когда это не так, с другой стороны времени на этот синк дать нужно, поэтому пока пользователь жмет кнопку - процесс идет)
    b - перезагрузка, даже если все висит (я не помню когда это не сработало, даже если ядро в панике, хотя ситуации придумать можно)

    Подробнее - не отпуская ctrl+shift+alt, нажимаешь и затем отжимаешь prnscr и нажимаешь символ b/u/s/... и только после этого отпускаешь ctrl+shift+alt (иначе он не поймает следующий prnscr)

    вот первая попавшаяся инструкция (shift нажимать не надо только если у тебя в режиме терминала, нажимай всегда не попутаешь, та же фигня чтобы переключиться между текстовыми терминалами ctrl+alt+F1...7 один из них графический, но в режиме графического нужно добавлять shift)

    во всех linux что я смотрел, по умолчанию это работает (но есть шанс что облачные ядра для гостевых виртуалок максимально кастрированы и это там отключено, что логично)

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

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

    @rPman
    Оба порта - вход для источника звука, один для микрофона, другой для line in, например от звуковой карты компьютера. (один требует чтобы устройство меняло свое сопротивление, т.е. пассивное, а другое генерировало напряжение).
    Ответ написан
    Комментировать
  • Почему не записываются данные в MySQL базу данных?

    @rPman
    заверши транзакцию в конце скрипта перед close - commit
    p.s. в 2024 году использовать mysqli это моветон.

    использовать видео, да еще и такое зашакаленное и на неадекватном хостинге (как так, по пробелу паузу не делает) чтобы передать исходники это прямое издевательство над теми у кого ты просишь помощи.
    Ответ написан
    9 комментариев
  • С чего начать написание своего софта(парсера)?

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

    Если речь о браузере, то языки - это javascript, html и css.

    Ну и помним про два отличающихся подхода - простой но ресурсоемкий с использованием готового браузера (инжект своего javascript плагином браузера или что то типа selenium) либо сложный но эффективный - симуляция http запросов из своего приложения. Оба подхода на противоположных сторонах, но в конечном счете оба будут использованы, где то один где то другой.

    p.s. сообщество полюбило python и javascript (node), я часто использую php, в т.ч. как часть комплекса, так как на питоне и javascript код получается многословнее. Кому то нравится java или c# (использовал когда можно было браузерный компонент легко в свое приложение вставить)
    Ответ написан
    Комментировать
  • Можно ли в mysql хранить 200 колонок, для 10+млн записей?

    @rPman
    Да, для хранения, добавления и чтения данных с анализом этот подход очень хорош, ценой незначительного для твоих объемов (кратного, Rsa97 все расписал) ты получишь огромный прирост производительности. Настоятельно рекомендую протестировать на тестовом стенде на своих данных, особенность хранения null записей в innodb и работа индесов с ними. Что лучше в твоем случае парный индекс в денормализованной форме или 200 индексов в нормальной можно будет определить только тестами (большая таблица может потребовать больше оперативной памяти на индексы).

    Есть еще недостаток - если в таблице будет очень много данных, добавление и тем более удаление колонки будет проходить очень медленно, особенно если база данных в это время будет использоваться.
    Ответ написан
    1 комментарий
  • Как посчитать количество дней в работе в Excel?

    @rPman
    Тут без дополнительной строки (такие обычно скрытыми делают или на другой странице) красиво не получится.
    В эту строчку вставь условие - если сумма больше или равна 1 то 1 иначе 0, и в целевой ячейке сложи результаты в этой строчке в итоговое значение.

    Если тебе для всех объектов, то такую строчку нужно делать для каждого объекта (т.е. уже получается таблица целая)

    p.s. за это ругают эксель и майкрософт, которая не вводит ничего полезного из мира реляционных баз данных, где такая задача решается очень красиво
    Ответ написан
  • Как гуглу удаётся работать так быстро? Какая у него память?

    @rPman
    Во первых, количество результатов не гарантирует что это действительно так... это приблизительная оценка, эжто видно особенно когда начинаешь искать редкие вещи, и количество результатов - десятки страниц, уже на пятой результаты заканчиваются.

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

    В третьих, запрос может быть распределенным на несколько машин, т.е. не каждый запрос на свою машину, это само собой, а именно один пользовательский запрос напрягает одновременно целый кластер. Мало того, я почти на 99% уверен что у гугла свое железо используется по полной (с момента как они стали активно использовать ИИ в своих алгоритмах поиска и построения индексов, уже лезт 10 гугл свои TPU пилит, минимум третья итерация, и в задачах ИИ они на пару порядков эффективнее GPU).

    В четвертых, гугл использует SSD, переход на них они начали почти 10 лет назад, на хабре была статья про это, т.е. им не нужно хранить индексы в оперативной памяти.

    Про софт - я не знаю, статей про это не помню, но нисколько не сомневаюсь, что такая компания как гугл могут запилить свой софт, работающий с хранилищем данных немного иначе чем это делают классические linux/win, когда каждый запрос к диску делает чуть ли не два копирования в оперативную память (это еще на уровне posix, затем пользовательский софт сериализацией занимается, это еще копирования), занимая ценный кэш процессора, но физически данные с дисков могут быть прочитаны в нужную область памяти вообще минуя процессор, как минимум nvme это могут штатно, так как висят на pci-e шине, да и sata точно есть механизмы, которые с помощью старого DMA могут копировать данные с указанных портов напрямую в области в памяти, точно читал о таких разработках в linux но до практически потрогать не доходило.

    p.s. первое что нагуглил по теме dma для nvme, обсуждают именно методы реализации инструментария в linux чтобы удобнее и быстрее с этим было работать из userspace (а не уровня драйверов)

    про tensor processing unit у них оказывается уже 5-ая ревизия должна быть (вот сравнение 4-ой ревизии, пишут про 20-кратное понижение carbon emission что бы это не значило)
    Ответ написан
    5 комментариев
  • Как лучше хранить много изображений для веб-приложения?

    @rPman
    Веб приложения максимально оптимизированы при работе с файлами на диске.
    Никакой другой метод не позволит дать такую производительность.

    Поэтому - авторизацию доступа делай на уровне веб сервера (вот пример с нормальным oauth)

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

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

    Тупой пример - числовой идентификатор переводи в hex, дели на группы по 4 символа и создавай соответствующие каталоги: /images/0d4f/3b00/a841/0d88, тут 0d88 это файл, остальные части - каталоги. Идентификатор соответственно 64-битное число 0x0d4f3b00a8410d88

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

    p.s. хранить большие бинарные блобы в базе данных можно только при очень большой нужде в транзакциях, и это очень дорого и по памяти и по процессору.
    Ответ написан
    2 комментария
  • Как скопировать из таблицы в документы вместе с картинками?

    @rPman
    Фича новая, похоже ее тупо не дореализовали.

    Можно написать скрипт Google Apps Script, который из твоей таблицы google sheets будет перебирать ячейки, копировать их в документ google docs. Вся возня с ячейками, так что это сам.

    // Получаем доступ к ячейке, содержащей изображение
    var cell = SpreadsheetApp.getActiveSpreadsheet().getRange('A1');
    
    // Получаем изображение из ячейки
    var cellImage = cell.getCellImage();
    
    ....
    
    // Открываем Google Docs документ и получаем его тело
    var doc = DocumentApp.openById(docId);
    // var doc = DocumentApp.getActiveDocument();
    var body = doc.getBody();
    
    // добавляем изображение в google docs документ
    body.appendImage(cellImage);
    Код только пример, тут нет логики обработки таблиц
    Ответ написан
    Комментировать
  • Как убрать предупреждение хрома о вирусе?

    @rPman
    Возможно у тебя на компьютере и правда вирус? Скачай бесплатный drweb cleaner/kaspersky removal tool и проверь машину,
    В идеале используй их live cd образы (установи на usb флешку)
    Ответ написан
    Комментировать
  • Постоянный запуск SeleniumBase заполняет ОЗУ ПК, как очистить озу?

    @rPman
    Перед закрытием скрипта делай browser.quit(), а не browser.close() тогда запущенный браузер будет корректно завершен, browser это webdriver.Chrome()
    Ответ написан
  • Какую технологию использовать для проигрывания видео в браузере с ручной подгрузкой байтов?

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

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

    p.s. вполне возможно что сейчас лучше/удобнее формировать .m3u8 плейлист, javascript там продвинутый у html video, но если что его можно формировать и прописывать с помощью data uri.
    Ответ написан
    Комментировать
  • Как открывать браузер у конкретного пользователя?

    @rPman
    ты пишешь телеграм бот и хочешь чтобы браузер у пользователя открывался по твоему желанию?
    никак, иначе это была бы дыра приватности (вычислить ip клиента) и для фишинга
    Ответ написан
  • Ошибка 404 на GitHubPages, почему?

    @rPman
    Первый же результат на запрос инструкция по размещению github.io
    Обратите внимание, что после загрузки проекта файл index.html должен находиться в корневой директории проекта:

    само собой лучше читать оригинальную документацию но тут тебе по русски
    Ответ написан
  • Как создать скрипт для выключения нескольких пк?

    @rPman
    в windows 10 и выше штатно идет openssh сервер (в более ранних версиях такой сервер ставится сторонними средствами в пару кликов, ну может с русскими именами файлов будут легкие проблемы), ищи в Параметры ПК - Дополнительные компоненты - добавить компонент.

    Настраиваешь беспарольную аутентификацию по ключу на целевой машине/профиле и запускаешь удаленно консольную утилиту shutdown /s (по умолчанию оно выключит машину через 1 минуту, предупредив всех работающих на нем пользователей, за это время выключение можно отменить)

    Кстати openssh не обязательно устанавливать, так как штатный планировщик заданий умеет работать по сети - там сверху по правой кнопке можно выбрать подключение к другому компьютеру (при наличии домена или рабочей группы с одинаковыми паролями и администраторскими правами) ну и соответственно утилита командной строки schtasks
    Ответ написан
    Комментировать