Задать вопрос
  • Какой самый лучший способ передать информацию между формами?

    @rPman
    Где то должна лежать доступной для формы-источника ссылка на форму получателя.

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

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

    @rPman
    sudo -i -u user_name команда
    данная команда запустит команду от нужного пользователя без процесса авторизации
    соответственно запихни ее в скрипт, разреши запускать данный скрипт через sudo (да получается каскадно 2 sudo) другому пользователю, которому разрешен логин через ssh
    Ответ написан
  • Как при действии назад перезаписать запись в стеке истории?

    @rPman
    Можно исключить историю в принципе сделав SPA (single page application) а переходы внутри приложения это изменения содержимого страницы (как вариант, страницы сайта это части этой единой страницы, но сокрытые стилями display:none, текущая часть сайта просто устанавливается видимой)

    p.s. то же самое можно реализовать и при формировании страницы на сервере, в этом случае необходимо состояние своего приложения сохранять в cookies сайта а не собирать из url

    Не надо так ломать пользовательский опыт, не делайте так. Многие при создании SPA подхода мучаются чтобы история все же была (через anchor навигацию url#id)
    Ответ написан
    Комментировать
  • Влияет ли качество копирования файлов после падения смартфона?

    @rPman
    Файл либо будет скопирован либо процесс копирования остановится с ошибкой (или даже не начнется)

    Если беспокоитесь о данных, настоятельно рекомендую не заниматься 'самолечением' и отнести смартфон в сервис
    Ответ написан
    Комментировать
  • Возможно ли использовать Ubuntu в WSL2, как Portable программу, которую можно записать на флэшку, вставить в другой комп и работать, как на первом?

    @rPman
    Не пользоваться wsl2, и настроить полноценную виртуальную машину, с помощью хоть того же hyperw.

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

    Для этого ты настаиваешь по виртуальной машине на ноутбуке и компьютере, указав один и тот же файл в качестве контейнера диска
    Ответ написан
    9 комментариев
  • Как проверрить правильность установки linux?

    @rPman
    Не хочу чтобы у меня опять слетел ubuntu изза поврежденных пакетов после обновы
    Штатное обновление не должно ломать систему, поэтому ищи причину в другом, например проблемы с оборудованием.

    Поврежденный при доставке пакет даже не будет пытаться установиться, там цифровая подпись и проверка корректности данных.

    И самое главное, чтобы легко и непринужденно восстанавливать систему после каких-то сбоев, пользуйся резервным копированием. Для высокой скорости резервного копирования (чтобы копировались только измененные данные без сканирования диска) рекомендую использовать снапшоты файловой системы btrfs
    Ответ написан
  • Альтернативный gnu linux для steam deck?

    @rPman
    Дистрибутивы linux никто не оптимизирует для запуска игр... это проблема приложений и наличия драйверов на видеокарту.

    Для запуска игр тебе нужно либо самостоятельно заниматься установкой игр в недружелюбном окружении либо искать того кто сделал это за тебя.

    Мне кажется лучший лянчер для этого - lutris и он есть подо все популярные дистрибутивы, он же предложит тебе установить на выбор ранер (wine/proton/steam/...) причем нескольких версий, предложит поиск по готовой базе скриптов настройки из lutris, в догонку поддерживает epic games/gog/origin/ubisoft/steam

    p.s. Всем кто изучает linux и просто начинающим я настоятельно рекомендую дистрибутивы семейства ubuntu (не debian) - это собственно любой ?buntu или к примеру mint.
    Ответ написан
    Комментировать
  • Внешний SSD на 1 тб за 800р на али. В чём подвох?

    @rPman
    Терабайтовый ssd накопитель можно найти от 3т.р. (все что дешевле - фейк)
    он будет действительно терабайтовым но:
    * очень ненадежным, т.е. высокая вероятность выхода из строя (контроллер) с потерей данны в течении года
    * заявленный официально низкий предел количества записей, т.е. легко приобрести накопитель с пределом в 200тб - это мало (я поигравшись с нейронками llama легко потратил пару сотен терабайт за неделю, там туда сюда файлы сотнями гигабайт перекидывать приходилось)
    по окончании этого лимита накопитель встает в режим только для чтения, данные можно прочитать
    * будет очень медленный на запись - все потребительские накопители, благодаря многоуровневым чипам памяти имеют особенность - пока пользователь на максимальной скорости пишет некоторый процент (33% для 3-битного, или 25% для 4-битного) от свободного места в лучшем (в реальности от еще меньшего пространства, в зависимости от фрагментации как файловой системы так и внутри накопителя) то все будет быстро, но по окончании этого места, скорость падает в несколько раз (буквально до десятка мегабайт/с), в это время накопитель фоном пытается раскидать сохраненные данные по накопителю так чтобы снова освободить быстрые для записи области.
    Так вот кривой контроллер, дешевые чипы памяти - делают этот процесс долгим и медленным.

    Единственный бонус - если за последние минуты не было объемных записей, чтение с любого ssd накопителя будет очень быстрым, это единственная причина, по которой все еще имеет смысл покупать дешевые устройства, если стратегия использованрия похожа 'на пишем мало читаем часто'

    p.s. nvme pci накопители имеют бонус к цене, так как контроллер у них по проще (его функции перекладывают на процессор и память компьютера) а скорость заметно выше, с той же ценой и характеристиками sata вариантов.
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    @rPman
    Если узкое место - разбор огромного json, то тебе нужен потоковый парсер, их огромное количество, гугл для питона выдает к пример ijson.

    Если этого будет мало, попробуй переписать это место на c/c++, там еще быстрее парсеры, например simdjson обещает гигабайты в секунду (и это реально так)

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

    @rPman
    intVal или floatVal автоматически преобразуют число в начале строки, проигнорировав все остальные символы а так же отсутствие числа в принципе (вернет 0).
    Ответ написан
    1 комментарий
  • Обновление свои android приложения централизовано, как?

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

    Гугл говорит что кто то уже такое запилил (типа AAAD) сам не пробовал но что то говорит что если вы android разработчики, создать такое же вам не будет сложно.

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

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

    @rPman
    Это называется профилирование, гуглить python profilers
    например cprofile
    https://habr.com/ru/companies/vk/articles/202832/
    Ответ написан
    Комментировать
  • Как выйти из цикла в другой функции?

    @rPman
    в 3.5 версии python завезли async/await

    и вообще избавляйся от синхронных вызовов и переделывай все на асинхронные
    Ответ написан
    Комментировать
  • Помoгите с выбором проца и видяхи для фото/видео/3D?

    @rPman
    В современных реалиях, начальная видеокарта может быть минимум nvidia gtx 3060 12gb vram с ценой порядка 32..35т.р.

    Это младшее решение без современных технологий геймдева (сомнительных если что) но:
    * позволит играть на высоких (не ультра) настройках FullHD все игры (порядка 40-60fps по просадкам)
    * 12gb vram позволит играть с нейронками типа stable diffusion (в т.ч. генерация видео), когда как 8gb (типовой конфиг mid-end) это на грани (6gb минимальные требования но к примеру генерацию видео уже не тянет)
    * соотношение цена-качества в россии имеет заметный перекос именно на этой видяхе

    Но нужно помнить это младшая линейка и устаревшая модель, с ней не получится расслабиться в 4k или 120fps, т.е. рабочая лошадка которая имеет смысл если не хватает на топовые модели (там надо от 70т.р.)

    В мир AMD можно найти по лучше и подешевле, но будет поставлен крест на нейронках, плюс все еще возможны проблемы с CAD софтом (у тебя заявлено требование 3d моделирования, мало ли в какой программе)
    Ответ написан
  • Зачем задавать ip интерфейсу?

    @rPman
    * ip адрес можно задать только интерфейсу
    * таких адресов на интерфейсе может быть от 0 до нескольких
    * на хосте инерфейсов может быть несколько
    формально можно одинаковые ip адреса на разных интерфейсах, это по умолчанию работать не будет но есть свои нюансы где это можно использовать

    У хоста может быть имя (dns, т.е. имя = ip адрес) и там еще netbios маячит майкрософтовский (по уму оно может работать без tcp/ip в пределах локальной сети но что то мне говорит это уже не так со времен winxp или даже win9x).

    Теперь к вопросу зачем задавать ip адрес - чтобы до машины можно было бы в принципе достучаться. Весь tcp/ip говорит что сервис на машине слушает соответствующий ip адрес и порт, нет адреса нечего слушать.

    p.s. Если ip адрес не задавать, такую сеть все равно можно использовать, например если два или больше интерфейса объединить в сетевой мост, формально достучаться до хоста можно будет по mac адресу (не tcp/ip) а так же специальным по можно мониторить пакеты, проходящие через мост.

    p.p.s. еще есть броадкасты, их в tcp/ip рассылают всей локальной сети скопом, для получения таких пакетов ip адрес тоже по уму не нужен, но софт на машине должен мониторить интерфейс особым образом (плюс если в сети есть свитчи, они могут собирать информацию о том какие машины с какими mac адресами в каких локальных сетях сидят и оптимизировать трафик, чтобы зря не слать тем кому не следует).
    Ответ написан
    7 комментариев
  • Как заблокировать возможность делать скриншоты на моем сайте или хотя бы по нажатию на PrtScn возвращать серую картинку вместо изображение сайта?

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

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

    p.s. правильно тебе говорят, что если что то ты видишь глазами, значит ты это можешь сфотографировать, записать и проанализировать.

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

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

    Есть ряд лайфхаков (так и пиши в гугл - твоя задача + chatgp + промпт лайфхак), которые позволяют увеличить качество результата:
    0. Помести в запрос максимум информации о твоей задаче, чем объемнее будет вопрос (без воды а именно информация) и чем шире он будет покрывать предметную область, тем легче gpt модель будет формулировать ответ. Сюда же можно добавить информацию, которой точно не было в обучающей выборке.
    1. one shot/multi shot - эта технология очень простая, перед своим вопросом, помести один или более заранее заготовленных примеров вопрос-ответ, в идеале на ту же тему, что и твой основной запрос... топовых результатов по бенчмаркам chatgpt4 достигает при использовании 5 примеров (в смысле именно так ее оценивали в бенчмарке MMLU где она набирает 86 балов (человек 60, специалист в узкой области 90, llama2 68.9).
    2. Think step by step - добавление похожих на эту просьб в запрос (можно поэкспериментировать) заставляют модель формировать ответ в виде пошаговой инструкции, это очень похоже на то как человек мыслит, ведь не сразу ответ приходит а идет пошаговый процесс. Как ни странно это очень сильно увеличивает качество результата

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

    @rPman
    Ты как будто отсутствовал последний год и пропустил бум ChatGPT. Этот алгоритм нейронных сетей (Generative Pre-trained Transformer) был разработан в 2017-ом 'гуглом' и 'доведен до ума' публично в OpenAI (их chatgpt4 сейчас самый продвинутый универсальный генератор текста, проявляющий признаки интеллекта).

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

    На текущий момент самая крутая из доступных нейронных сетей (доступные предобученные веса сети), которую можно доучивать под свою задачу или даже пользоваться как есть, - это фейсбуковская llama2 (бесплатная, с очень либеральной лицензией, позволяющая коммерческое использование), ее можно запускать на процессоре на десктопной машине с меньше 64гб ram (скорость от 1токен в секунду, слово это 1-7 токенов) с помощью llama.cpp или на машине с GPU, суммарной емкостью vram от 80Gb (я не нашел точные минимальные требования, квантизация 8бит доступна в штатном коде llama а 4-битную тоже можно но я не уверен какие проекты уже поддерживают llama2).

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

    p.s. самостоятельная разработка (сбор обучающих данных и обучение) с нуля подобного проекта невероятно дорогая, слабые версии имеют оценку стоимости обучения (при наличии специалистов, которые уже стали на вес золота) в десятки миллионов баксов только на оборудование (тоже дефицитное, так как используется в основном кластеры на основе оборудования nvidia, которые монополисты в ИИ и рисуют 10х стоимость не моргнув глазом а еще искусственно не расширяют производство чипов при наличии высокого спроса)

    Но если взять уже обученную сетку (веса) собрать небольшой датасет текстов под свою задачу, то тюнинг будет достаточно дешевым, вот еще со старой llama так делали
    Ответ написан
    1 комментарий
  • Почему не могу объединить разделы на флешке?

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

    'объединять разделы' это на сколько я знаю другое - это про создание програмного raid массива
    Ответ написан
    Комментировать
  • Что почитать про диски (HDD, SSD) и файловые системы, желательно какое-то системное описание?

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

    1. Случайный и многопоточный доступ - принципиальная необходимость задумываться об этом исходит из физической особенности накопителей, последовательный доступ от случайного (имеется в виду как у hdd так и у ssd (в меньшей степени, зависит от размера читаемого блока кластера, потребительскиее ssd это 256кб) значительно отличаются (на порядок или даже два) по времени. Аппаратные контроллеры на материнской плате и даже на диске (или драйвера и планировщик ос) могут физически считывать данных больше чем потребуется (read ahead), делая это фоном, после запроса и сохраняя в своей памяти.
    Если несколько приложений одновременно потребуют данные с разных областей устройства хранения, специальный планировщик ос может приостанавливать работу этих приложений, собирая как можно больше запросов на данные, сортируя их для оптимальной их обработки. Пользовательское приложение может делать это значительно эффективнее, если заранее озаботится о том, как именно данные будут храниться на диске (обычно речь идет о хранении данных минуя файловую систему).

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

    3. Кеширование (буферизирование) записи - приложение может управлять, стоит ли ждать окончания физической записи данных на диск или это можно сделать фоном или даже отложить на потом. Например fflush позволяет принудительно сбросить буфера при использовании fwrite (и других от stdlib), более низкоуровневые вызовы позволяют точнее управлять процессом. Помимо инструментов управления кешированием на уровне приложения есть способы настроить это на уровне ОС (например ext4 позволяет настроить стратегию записи data=writeback, это делает файловую систему уязвимой к сбоям но значительно ускоряет запись, так как даже fflush из приложения не будет ждать окончательной записи), так же разные сетевые файловые системы могут накладывать дополнительные ограничения (точно помню что nfs обрабатывает fwrite по другому в отличии от локальных записей, делая больше лишних действий на диске)

    p.s. про mmap, меанизмы ОС (как linux так и windows) позволяет вместо работы с файлом по кусочкам (fopen/fread/fwrite/...) 'замапить' указанный файл или даже раздел/диск на область памяти, при доступе к которой прозрачно будут совершаться чтения и записи на диск. Этот способ работы с файлами зачастую самый производительный (кстати по умолчанию используются на исполняемый файл приложения и .dll/.so) и очень часто еще и удобнее, так как кеширование данных будет произведено средствами ос, и при повторном запуске приложения данные уже будут в памяти (при обычном fopen их пришлось бы считывать в память, т.е. копировать что дает 2x накладные расходы на процессор).

    -------------

    4. Файловые системы это уровень абстракций ОС, значительно добавляет накладные расходы на работу с данными но за счет удобства (например возможность расширить хранилище без полного копирования данных, просто увеличив размер раздела или добавив новый накопитель, как это позволяют файловые системы - комбаины типа btrfs/zfs), разные файловые системы организуют хранение по разному, что значительно влияет на скорость как записи так и чтения.
    Например cow файловые системы (xfs/zfs/btrfs) каждое последующую запись делают последовательно, даже если записываемые чанки/кластеры принадлежат разным файлам, даже если это модификация а не добавление в конец, что благосклонно сказывается на скорость записи но отвратительно фрагментирует размещение файлов на диске (там есть механизмы борьбы с этим), т.е. для хранилище файлов разного размера, считываемых/изменяемых целиком такие файловые системы идеальны, но для баз данных наоборот очень неэффективны (в таких фс можно принудительно отключить cow для определенных файлов). btrfs/zfs за эти накладные расходы (незначительные) дают бонусом функционал быстрых снапшотов (почитай про btrfs snapshot incremental backup) и высокую устойчивость к сбоям.
    Еще пример, файловые системы, с целью защитить данные от сбоев, добавили к функционалу понятие журнал, промежуточное место, куда записываются данные (метаданные) до тех пор пока приложение не зафиксирует изменения (закрытие файла или fflush), в нормальных ОС существует возможность разместить этот журнал на отдельном, более быстром, накопителе (например ext3/ext4) или отключить полностью. Это позволяет заметно ускорить запись и не покупать на весь объем данных быстрый и дорогой накопитель.
    Было время, когда можно было буквально (кажется у xfs но я могу ошибаться) указать разные накопители для метаданных (информация о том как файл размещен на диске и информация о атрибутах файлов) и самих данных, что тоже в условиях значительного отличия скорости работы емких hdd и быстрых но не емких ssd, сэкономить на построении хранилища.

    5. Сжатие данных на лету - некоторые файловые системы позволяют прозрачно для приложений пропускать данные через библиотеку сжатия (в пределах кластера или даже нескольких соседних), например ntfs использует compress, а btrfs позволяет выбирать, например zstd (один из лучших по соотношений скорость/сжатие), было время когда включение сжатия на медленных накопителях давала двух-трех кратное ускорение скорости чтения практически бесплатно (а запись почти не замедлялась но повышалась нагрузка на процессор), на современных же накопителях процессор может не поспевать (но есть дорогие контроллеры с таким функционалом).
    Еще есть тип сжатия - sparse files (дырявые файлы), части файла, в которые не производилась запись, физически не занимают место (фактически тратится место только крохотная часть в области метаданных файловой системы), при чтении таких частей будут возвращены нули, так же есть функции по замене ранее записанных частей файла на такие дырки. Такие файлы могут понадобиться, например, когда нужно хранить огромные разряженные матрицы с индексацией по позиции, индекс тут будет использоваться от файловой системы но выигрыш по производительности сомнителен и требует измерений под ваши данные.

    p.s. любая сторонняя библиотека, добавляющая еще один уровень абстракции к хранилищу, может дать выигрыш только если стратегия работы с данными совпадает с той, на что заточена эта библиотека. Например реляционные базы данных дают готовый и обширный функционал по индексированию данных, многопользовательских транзакций но за счет больших накладных расходов на их поддержание. Помню был тут вопрос про хранение терабайтов данных числовой ключ -> крохотное значение (несколько байтов хеш), так вот майкрософтовская sql уже с миллионами записей могла до секунды на запись диском шерстить (тысячи iops), когда как самодельный и примитивный велосипед с одноуровневым индексом по хешу от значения мог дать скорость доступа и записи 1к1 iops накопителя (от 1 вызов к диску на запрос чтения и от 2 - на запись).
    Ответ написан
    9 комментариев