Задать вопрос
  • Как сделать обновление данных в реальном времени в шаблоне html на django?

    @rPman
    Есть два основных направления
    * устаревший, но не требующий javascript на клиенте - это разделение страницы на фреймы (iframe и frame) таким образом, чтобы изменяющиеся части попадали на свой фрейм
    в этом случае будет мигать не вся страница а только изменяющаяся часть, и вообще то браузеры прекрасно это обрабатывают, даже курсор в формах остается на старом месте
    Не рекомендую этот подход, он устарел и имеет смысл только если действительно нужно разрабатывать сайт для условий отключенного javascript (например tor/i2p сети).
    Очень много логики можно реализовать на основе css, язык там уже на столько сложен и многофункционален что простые вещи типа отображение и смокрытие элементов на основе кликов - обычное дело.
    Совет, чтобы мерцание не было видно, оптимизируйте ответ бакэнда таким образом чтобы ответ выдавался по времени быстрее некоторого порога (при его превышении страница будет мерцать)

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

    Собирать на стороне клиента страницу можно по разному:

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

    Интеллектуальная пересборка - полная аналогия разделения страницы на области соответственно логики их обновления как в решении с iframe, когда элементы на странице обновляются блоками ровно тогда и там, когда это нужно.

    Как частный случай обновляется даже не структура html а только текстовые значения (и даже значения атрибутов), так как очень часто обновление имеет смысл для данных а не структуры, за исключением случаев когда есть списки и размеры их меняются. Этот подход спорный, я видел когда так реализовывали мультиязыковую поддержку (т.е. по умолчанию страница как бы пустая, а затем загружается языковой json и все элементы наполняются текстом соответственно уникальным id), несет некоторую нагрузку на процессор (незначительную, никто так не оптимизирует уже давно), требует некоторого учета при верстке (нужно везде прописывать минимальные размеры) но гарантированно не мерцает даже на медленных соединениях, так как данные можно сначала загузить полностью и только потом менять на странице
    ------------------------------

    Обновления со стороны сервера можно получать двумя способами
    - периодическими опросами (генерирует квадратичную нагрузку на сервер при увеличении одновременно работающих пользователей) но очень простой в реализации
    - воспользоваться websocket/events, эти технологии специально созданы для того чтобы сервер мог оперативно сообщить какую то информацию клиентам без постоянных опросов и лишней нагрузке на сервер, но требует поднятие websocket сервера, удерживающего открытые соединения, для тех кто привык к http rest подходу с cgi короткоживущими приложениями, это может быть сложно, но результат того стоит
    Ответ написан
    Комментировать
  • Слияние разделов диска на разных физических ssd?

    @rPman
    Да можешь расширить место ntfs раздела, уменьшив разделы с linux, если там достаточно свободного места. Рекомендую делать это с загрузочного диска linux с помощью например gparted. Настоятельно рекомендую перед этим сначала отключить гибернацию на windows машине, так как при ее наличии система ускоряет свою загрузку с ее помощью даже когда ты ее не используешь, и это может создать проблемы при работе из linux с диском c:.

    Красиво объединить два раздела на разных дисках в один в windows можно только при использовании его software raid 0, для этого диски должны быть с GPT разметкой и разделы должны быть равного размера, кстати сделать это с системным диском на лету не получится, нужно будет грузиться в режим восстановления (с установочного диска), пример инструкции (там raid mirror, но идея та же)

    В некоторых случаях можно не делать единый raid а создать два разных диска и вручную перенести объемные каталоги (именно каталоги, не файлы по отдельности) на другой диск, создав для этих каталогов символические ссылки на изначальном месте, если не трогать системные каталоги c:\windows то все будет работать (можно и там кое что перенести, но можно получить тыкву). Символические ссылки удобно создавать в far commander, кнопка alt+f6 интерфейс как копирование.
    Ответ написан
    Комментировать
  • Внешний винт LaCie сломан USB-C разъем, поможет ли донор?

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

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

    @rPman
    Правильный способ - создать свой инсталятор, который в свою очередь все развернет, скопирует и спросит пользователя куда, nsis тебе уже посоветовали. Есть по проще - самораспаковывающиеся архивы, sfx модули есть по до все от winrar до zip

    Есть не самый тривиальный способ хранения файлов прямо в exe-шнике как часть данных в секции .data, для c/c++ это создание объектного .obj файла с последующей его линковкой, при запуске такие данные доступны нативно без предварительной загрузки (формально операционная система мапит exe-шник в память и загружает данные по мере необходимости максимально эффективно).

    Сделать это можно с помощью xxd (генерирует cpp вида data = {0x11,0x22,...) явно не самый эффективный способ но зато самый универсальный, либо с помощью objcopy
    https://habr.com/ru/post/545946/
    https://stackoverflow.com/questions/47414607/how-t...
    https://medium.com/@irony.superman/convert-binary-...
    Ответ написан
    Комментировать
  • Как выбрать норм SATA SSD до 2400р?

    @rPman
    Ты ограничил стоимость ценой чуть ли не самой низкой по рынку, ниже должен быть ну просто мусор

    Вот к примеру твои ссылки просто по характеристикам ресурс TBW 40Тб, какие у тебя задачи на такой низкий ресурс? Не надейся что 3 года гарантии позволят тебе выработать ресурс и поменять, это не гарантийный случай.

    Еще момент, как ты собираешься решать гарантийные проблемы с озоном? Покупая midend расходники (а ssd это именно расходник) нужно заранее готовиться к его выходу из строя.

    Поэтому критерии выбора - большой гарантийный срок и большой ресурс (выше 200Тб), хотя конечно если у тебя задачи редко писать и много читать, то почему нет.

    p.s. дешевые железки после определенной наработки могут выдать какой-нибудь сюрприз
    Например у меня ADATA SX6000PNP nvme, выработал всего 5% и я стал замечать, что при превышении внутреннего буфера на запись, может ронять скорость чуть ли не до 5мб/с (пока кеш не переполнен выдает сотни) и главное в это время может подвисать чтение.
    Ответ написан
    2 комментария
  • Кто сможет Объяснить код объясните его пожалуйста?

    @rPman
    вот что ответил ChatGPT с переводом от deepl
    Этот код считывает входные данные из стандартного потока ввода (stdin) и перебирает каждую строку с помощью цикла for. Для каждой строки он делает следующее:

    Используется метод strip() для удаления из строки пробельных символов, идущих впереди или позади.
    С помощью метода capitalize() первая буква строки пишется заглавной, а остальные буквы делаются строчными.
    Используется f-строка для форматирования строки в строку, заключенную в двойные кавычки и сопровождаемую символом новой строки.
    Полученная строка печатается в стандартный поток вывода.

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

    привет мир
    как дела

    Выходные данные будут такими:
    "Привет мир\n"
    "Как дела\n"
    Ответ написан
    Комментировать
  • Может ли клавиатура ps/2 или тачпад на ноутбуке отключаться от того, что подключен к не заземленной розетке?

    @rPman
    Можно попытаться восстановить отвалившуюся клавиатуру с помощью команды
    pnputil /restart-device "PCI\VEN_8086&DEV_3EA0&SUBSYS_14311043&REV_00\3&11583659&1&10"

    код можно посмотреть в свойствах устройства в диспетчере устройства

    примерно так перезапускали зависшую видеокарту майнеры
    Ответ написан
    1 комментарий
  • Сколько Google платит за устранение ошибок в его продуктах?

    @rPman
    Хорошо подумай, есть ли у гугла возможность провести эту оплату именно тебе?

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

    Погугли на хабре есть тьма статей про хеппи и не очень истории
    Ответ написан
    Комментировать
  • Как правильно писать код, чтобы не было PHP Notice: Undefined index?

    @rPman
    если ты точно знаешь что отсутствие переменной это нормальная ситуация, то можно отключить проверку ее наличия с помощью @, тогда будет подставлено значение NULL в случае ошибки для строк, и 0 для чисел
    @$com_offer['offer_count'] += @$_item['quantity'];
    В данном случае если у тебя оба ключа будут отсутствовать то будет создан 'offer_count' с 0 значением

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

    @rPman
    когда запросы блочатся, когда есть проверка браузера. Задавая вопрос,
    но ты не задала вопрос про свою проблему

    покажи свой код, покажи свои попытки, где именно затык, вот тогда тебе дадут советы

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

    @rPman
    сделаю 'медвежью услугу'.

    создаешь две таблицы
    user (id и другие поля пользователя в будущем) и user_name (id, name, user_id) где на каждого пользователя будет по одной записи в user и по несколько (точнее от задачи, ведь может быть и 0 и 1) будет записей на каждое имя.

    p.s. таблица user в твоем примере оказывается не нужна, если больше никаких полей не предвидится, а значит для хранения данных хватило бы user_names но существование таблицы user идеологически верное, так как на его id можно определить автогенерацию идентификатора, контроль уникальности и прочее прочее

    чтобы база данных эффективно работала с такими связями есть индексы foreign key в данном случае это индекс user_name.user_id -> user.id

    запросы к базе у тебя будут типа
    select * from user left join user_names on user_names.user_id=user.id where user.id=xxx

    выдаст список user_names указанного пользователя xxx
    Ответ написан
    Комментировать
  • Какая есть альтернатива для lowdb?

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

    нереляционная, то есть хранение не в таблицах
    не майся дурью, освой sqlite, это промышленный стандарт, удобнее инструмента не найти в принципе, все кто так или иначе ковырялись с файлами приходят либо к полноценному серверу базы данных или останавливаются на промежуточном варианте с sqlite (база данных в файле, сервер не нужен)
    Единственная причина хранить данные в файлах в своем формате - это оптимизация скорости за счет особых знаний о данных и их большом количестве
    Ответ написан
  • Почему происходит сбой загрузки во всех браузерах?

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


    в windows они находятся в %appdata%\Local\Yandex\YandexBrowser\
    Ответ написан
    Комментировать
  • Как выйти из гитхаба?

    @rPman
    так измени конфиг той же командой
    git config --global user.name XXX
    git config --global user.email YYY
    # так же убери --global если настройки локальны для репозитария


    а еще конфигурация репозитария хранится в текстовом виде в .git/config просто отредактируй его
    Ответ написан
  • Как написать свой парсер (поисковик) CSV на Java?

    @rPman
    Важно, что нельзя:
    2) Сохранять весь файл ни в какую-либо структуру, ни как массив байт

    извини, но если хочешь высокой скорости, какую то информацию сохранить придется

    Ускорение возможно только за счет траты памяти, сохраняя какую то информацию.

    Варианты:
    1. ускорить примерно 'в константу раз' можно, исключив проблемы с парсингом csv формата, т.е. сохранив информацию о координатах каждой строки и даже его элементах (ты должен хранить смещение в файле для каждой следующей строки и размеры/смещения каждой колонки относительно начала строки, особенно это актуально для строковых значений, экранирование символов " и \n тратит время на парсинг)
    2. хранение информации о типах данных может так же заметно увеличить чтение данных из файла, причем речь не только о просто знании структуры (какая колонка какой тип ожидается) но и о фактическом значении в каждой строке (например факты расхождения с ожидаемой структурой), но это уже от задачи, редко когда требуется гибкая типизация, и как минимум, знание о том что строка требует или не требует обработку экранирования может ускорить это в 2 раза, очень часто это знание может быть заложено в код заранее, без предварительного чтения файла
    3. хеширование значений в памяти, дает огромный прирост к поиску данных 'по значению', причем в зависимости от задачи это может быть хеширование как всей строки так и отдельных ее колонок или группы (как частный случай индексирования)
    4. построение индексов, еще большая информация о данных, в зависимости от типа индекса, позволяет за константное/логарифмическое время решать такие задачи как поиск max/min/сравнение для числовых данных, или к примеру анализ строковых (например по словам или языковые запросы, т.е. наличие символов из наборов)
    p.s. в догонку мелкие оптимизации
    - работа с файлом, замапленным на кусок памяти (все ОС это поддерживают) дает огромный прирост по сравнению с чтением по кусочкам и тем более fgets (на самом деле при грамотном fread скорости не на много отличаются но речь просто об удобстве и единообразии кода)
    - java это не совсем про хорошую скорость низкоуровневых операций, тут может оказаться что готовые но 'плохие' методы (реализованные на нативном коде) окажутся быстрее правильных идеологически но спотыкающихся о jvm прослойку, там где нужна скорость где действительно приходится так оптимизировать, бери c++, тем более благодаря последним десятилетиям развития std он стал очень и очень удобным не в ущерб скорости.

    p.p.s. надо быть очень странным человеком, чтобы хранить данные в csv файле вместо адекватной базы данных с уже готовыми инструментами индексации и поиска.
    Настоятельно рекомендую освоить sqlite, в т.ч. как инструмент передачи данных другим людям, так как ну очень достали те кто использует excel или csv, изобретая бредовые форматы сериализации списков и сложных связей, постоянно спотыкаясь об мультиязыковую поддержку, даты и даже банальные символы точка и запятая у вещественных чисел

    Кстати у sqlite встроенные механизмы импорта данных из csv, в 1 строчку
    Ответ написан
  • Можно ли программно отправлять сообщения от лица человеческих аккаунтов Telegram?

    @rPman
    были библиотеки, неофициальные, но их поддержка со временем превращается в тыкву, например работают приватные чаты и маленькие каналы, но большие группы уже нет

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

    Попробуй эту https://github.com/alexander-akhmetov/python-telegram вроде бы поддержка у них оперативная
    еще https://github.com/iTeam-co/pytglib

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

    @rPman
    поддержка не гарантируется но ты попробуй например так
    <video src="video.mkv"></video>
    или так
    <video>
        <source src="video.mkv" type="video/mp4">
    </video>
    Ответ написан
    Комментировать
  • Клавиатура не печатает много символов при зажатии клавиши?

    @rPman
    долгое нажатие shift, вылезет менюшка для людей с ограниченными возможностями, там ищи - отключить залипание
    Ответ написан
    Комментировать
  • Как спарсить информацию с динамического сайта на python/js?

    @rPman
    забрось ты эти попытки симуляции поведения браузера
    потратишь времени вагон, а потом разработчики сайта что то подправят и тебе снова анализировать код

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