• Как поставить второй системой linux, на другой диск?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Самый оптимальный вариант - отключить все диски и оставить только тот, на который надо её поставить, а на самом диске удалить все разделы. И далее ставить новую ОС. После установки уже можно подключить все остальные диски и в биосе выставить загрузку с нужного диска. Если хочется иметь удобное загрузочное меню без биоса: лучшим вариантом будет отдельный загрузчик, раньше я юзал Acronis OS Selector и каждую ОС ставил со своим загрузчиком - т.е., диски с ОС самодостаточны и не зависят от других. Не знаю как он сейчас, но вроде его засунули в Acronis Disk Director. И еще один удобный вариант: после установки ОС надо в её загрузчик вручную добавить записи о других ОС и в загрузчиках других ОС тоже самое сделать. Таким образом будет возможность выбора с какого диска грузиться и в БИОСе/бут меню, и в загрузчике, а так же будет страховка на случай поломки ОС/загрузчика. А так же можно будет безболезненно удалить целиком любую ОСь и оставить нужную и она даже будет продолжать работать. В любом случае, надо ставить ОС так, чтобы её загрузка не зависла от других ОС и дисков.

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


    А еще есть MBR, GPT, активные/пассивные разделы, составные диски и разделы, софтовые и железные RAID, BIOS, UEFI, NVME, SATA, SAS, USB, CD, сетевая загрузка (а тут еще Ethernet, WiFi, DHCP, PXE в линукс и винде), дисковые контроллеры, сетевые хранилища, плюс дикая фантазия разработчиков материнских плат и контроллеров и их прошивок. И вот это все может быть перемешано в разных вариациях с разными дикими фантазиями и еще более безумными результатами. Что точно гарантирует безразмерную кучу незабываемых ощущений в процессе. Так что очень, очень-очень рекомендую всегда ставить на один ПК все операционные системы независимо друг от друга со своими родными загрузчиками - лучше путь будет цепочка загрузчиков и запас, чем их не будет, когда одна из осей или дисков отправятся в электронный рай.
    Ответ написан
    Комментировать
  • Как определить что страница открыта в браузере Telegram?

    Noizefan
    @Noizefan
    WebView внутри приложения все равно сильно урезан от полной версии браузера
    задача проста:
    1) выявить расхождения
    2) определять их на стороне клиента
    https://abrahamjuliot.github.io/creepjs/
    вот тебе пачка расхождений
    Ответ написан
    Комментировать
  • Почтовое приложение android со встроенной синхронизацией?

    @Refguser
    Решения для бизнеса: от создания ИМ до...
    Thunderbird ака K-9 Mail и ещё несколько аналогичных

    Так же можно найти что-нибудь на русторе
    Ответ написан
  • Не могу играть в некоторые игры по роутеру(МТС провайдер) на всех устройствах, а через мобильный интернет могу. Почему так?

    @ElxkoT
    Все в таких вопросах всё время сразу кричат про "ркн, сво, косяк провайдера" и забывают о том, что в любых проблем есть вполне конкретная причина. Если адрес серый, то белый адрес, через который вы фактически выходите в интернет, запросто может использоваться на весь дом, квартал или даже район. При таких вводных есть очень хорошая вероятность, что кто-то из ваших соседей в этих проблемных играх вёл себя не по-джентльменски и получил за это бан по IP, утащив за собой и всех своих соседей. Такое бывает довольно часто. Для теста попробуйте позвонить в техподдержку провайдера, объяснить ситуацию и попросить выдать вам новый адрес с другим NAT. Если такой возможности нет, можете для теста подключить себе белый IP, либо вырросить его временно, аргументируя тем, что иначе вынуждены будете поменять провайдера.
    Ответ написан
    Комментировать
  • Какая модель LLama лучше для использования в telegram?

    @rPman
    Какая? llama3-70b наилучшая из открытых (те что можно запустить у себя), или command r+. Так же хорошие открытые модели основанные на mixtral (mixtral-8x22b). llama3-8b тоже не плохая для своего размера (запустится на 8-16Gb десктопных видеокартах).
    https://chat.lmsys.org/?leaderboard

    Llama это модель, она ничего не может, это файл на диске. Для того чтобы модель работала тебе нужна программа, например с гитхаба официальный пример на python (он очень простой, там буквально 5-10 строчек)

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

    Готовый сервер идет в поставке с llama.cpp (запросы api по http), он же умеет обрабатывать одновременно несколько запросов (по умолчанию 10 одновременных потоков кажется) так же есть возможность самому собирать запросы в пакет и отправлять одним запросом в сервер, он все обработает и вернет, и по скорости это будет быстрее чем каждый по отдельности (особенно когда работа на gpu).

    Программирование ботов gpt - это придумывание запросов на естественном языке, которые дополняются данными от пользователей или еще какими (например обычный запрос в классическую базу, вываливая в промп тупо текстом, к примеру csv форматом). У тебя ограниченное количество ресурсов, маленькое окно контекста (у llama это 8к токенов) и в попытке все туда уместить и приходится что то поверх городить. тупой пример - если ты будешь весь чат пихать в контекст, уже через 20-30 сообщений он переполнится, и нужно будет принимать решение что и как выкидывать.

    А еще llama любит отвечать лишнее, т.е. ты ее просишь ответь числом, а оно отвечает - ваш ответ 3... вот эти 'ваш ответ' нужно как то выявлять. А еще модели лучше работают, если просить их по рассуждать, она тебе даст рассуждения, тебе они нафиг не нужны, как из них результат вычленить? Иногда можно отделить мусор от ответа, попросив его дать в каком то формате, например дай ответ в формате json, а так как запрос к gpt это часть беседы в форме чата, можно дать часть ответа прямо в промпте, например "...assitent: {" тогда у модели не останется варианта как сразу фигачить json.

    Но чем больше ограничений ты даешь модели тем хуже ее качество ответов.

    У llama.cpp есть механизмы задания gramma формата ответа, какие токены предпочтительнее и в каком формате, говорят не идеально реализовано (например не получится задать варианты ответов списком слов типа отвечай только название цвета 'красный', 'зеленый', 'желтый', 'другое',..)
    Ответ написан
    Комментировать
  • Как отправить разные изображения для сообщений с одинаковым содержанием в Telebot?

    Vindicar
    @Vindicar
    RTFM!
    Тебе нужен автомат состояний (finite state machine, FSM). Не знаю, есть ли его реализация в комплекте с telebot, но идея простая: нужно помнить, что пользователь делал раньше, т.е. иметь хранилище ключ-значение вида "id пользователя -> состояние+доп. инфа". В простейшем варианте хватит и словаря (если тебе не критично, чтобы сведения переживали перезагрузку бота).
    Ответ написан
    Комментировать
  • Как запустить несколько фреймворков одновременно?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Никак, не надо смешивать мягкое с тёплым. Если хотите сделать два интерфейса, то делаете ядро приложения с API, web-приложение и gui-приложение, использующие API ядра. И все три запускаться должны отдельно.
    Ответ написан
    Комментировать
  • На вход программе поступает строка, как удалить из нее все символы "w" и "t"?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    v = ''.join([x for x in a if x not in 'wt'])
    Ответ написан
    Комментировать
  • Почему телеграмм бот не реагирует на часть кода?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Потому что первым отрабатывает функция get_text_messages. Зачем вы сделали a_task, которая тоже должна реагировать на текст не понятно. Оставляйте одну функцию и в ней делайте ветвление в зависимости от введенного текста.
    Ответ написан
    Комментировать
  • Непонятные символы и как они получаются?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    https://www.w3schools.com/tags/ref_urlencode.ASP
    Update: для тех, кто в танке (https://www.ascii.ca/cp1251.htm):
    %C3 → Г
    %E5 → е 
    %EE → о
    %F0 → р
    %E3 → г
    %E8 → и
    %E9 → й
    Ответ написан
    2 комментария
  • Как обмануть провайдера под видом спидтеста?

    Исходя из вашего прошлого вопроса - никак.
    Ответ написан
    Комментировать
  • Почему проходят первые тесты, но не проходят вторые на Codewars?

    Vindicar
    @Vindicar
    RTFM!
    Тормозит, потому что ты брутфорсишь перебор простых чисел. Используй решето Эратосфена.
    Иными словами, тебе не нужно перебирать все числа меньшие N, чтобы найти делители - достаточно проверить все простые числа, меньшие или равные N/2. А так как ты находишь простые числа по возрастанию, то все эти числа ты уже знаешь.
    До кучи, 2 всегда простое, а вот другие чётные числа - нет. Можешь добавить 2 в список заранее, а цикл по i делать от 3 с шагом 2.

    Ну и да, не называй переменную list. Это сбивает с толку.
    Ответ написан
    Комментировать
  • Авторизация из чата через telegram?

    @q2digger
    никого не трогаю, починяю примус
    Ответ написан
    Комментировать
  • Можете посоветовать видео блогеров обучающие программированию на Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Видео нужно тогда, когда ты прочёл книгу, вроде всё понял, но куда тыкать пока не понял. В видео можно посмотреть чисто практические приемы работы с IDE, с консолью, с системой. То, что слабо отражено в книгах. Чтоб не тыкаться как кутёнок в незнакомый интерфейс.
    А собственно язык лучше по хорошей книге и затем кодить, кодить, читать исходники других проектов, вникать, дебажить.

    Самое главное - понять, что язык программирования - это как лопата у агронома. Лопатой надо владеть? Надо. Достаточно ли агроному лопаты? Нет. Ему надо знать и уметь много чего - сорта, почвы, технологии, химию, а лопатой он делает только некоторую часть операций.
    Программисту надо знать в той или иной степени информатику, алгоритмы, структуры данных, языки программирования, базовые библиотеки, БД и СУБД, API, ООП, фреймворки, сети, протоколы, ИБ, тестирование (в части, касающейся программеров), да много чего. Язык там не на первом месте.

    Видосиками это не изучишь, как ни старайся.

    Из более-менее полезного видео поищи «алгоритмы и структуры на Python» от МФТИ, там десятка полтора лекций Хирьянова. Но это лучше после книги «Изучаем Python» М.Лутца.
    Ответ написан
    1 комментарий
  • Как написать бота отслеживающего скидки на маркетплейсах?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну что вы как дети?
    Каждый раз этот вечнозелёный вопрос обрастает гроздьями любопытных.
    Спарсить весь интернет мы хочем, а научиться пользоваться одним поисковым сервисом - не можем.
    Ответ написан
    Комментировать
  • Как преобразовать значение при использовании dataclass?

    Vindicar
    @Vindicar
    RTFM!
    Я в таких случаях создаю фабричный метод.
    @dataclass
    class Person:
        first_name: str
        last_name: str
        bdate: date
    
        @classmethod
        def make(cls, first_name: str, last_name: str, bdate: str) -> 'Person':
            _bdate = datetime.strptime(bdate, '%Y%m%d').date()
            return cls(first_name=first_name, last_name=last_name, bdate=_bdate)
    
    data = {
        'first_name': 'Adam', 
        'last_name': 'Smith', 
        'bdate': '20220617'
    }
    person = Person.make(**data)

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

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

    Adamos
    @Adamos
    class VeryOpenOne
    {
    public $property;
    }
    $voo = new VeryOpenOne();
    $name = 'pro' . 'perty';
    $voo->$name = 'Пытаясь отрефакторить тот класс, ' .
      'ты хрен найдешь, что в этой строчке меняется эта переменная. ' .
      'Никакое самое умное IDE не поможет';
    Ответ написан
    1 комментарий
  • Как постоянно проверять бд на изменения, Flask?

    NeiroNx
    @NeiroNx
    Программист
    В бэкэнде пишите то что будет отдавать вам записи новее чем определеннная запись или дата-время. Во фронтэнде SetInterval и fetch на этот бэкэнд, и последняя запись в какой либо переменной. В бэк энде также должно быть ограничение по числу записей, отдаваемых впервые, чтобы всю базу не отдавать.
    Ответ написан
    1 комментарий
  • Как избавиться от слежки СМС?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Ну, начать надо с бессмертной фразы "какие ваши доказательства?" Ну то есть, пусть продемонстрирует, что кто-то может что-то читать, а не просто блаблакать.
    Разумеется, такие возможности есть, причем вполне себе легитимные. Например "МТС.Поиск" - сервис такой. В базовой версии отслеживает передвижение по городу, при установке агента на телефон - позволяет полностью удалено управлять им (в том числе прослушивать окружение через микрофон телефона). Для подключения к сервису достаточно бросить незаблокированный телефон - придет смс с запросом на согласие, ответить да - и вуаля :)
    Как проверить? Посмотреть, нет ли на телефоне агента. Если агента вроде нет, а доступ есть - сделать полный сброс телефона. Если не было рута, этого будет достаточно. Если рут был - лучше его перешить.
    Ответ написан
    4 комментария
  • Разница в доходах AdMob на iOS и Android?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Не смотрю видео. Не монетизирую через AdMob. Не публикую в App Store.
    Просто анализирую статистику из разных источников.

    Попробуйте загуглить
    1) Ios vs Android доля рынка по странам
    2) Toп стран по покупкам в сторах
    3) На каждый год можно найти статьи сколько всего денежек потрачено в сторах

    Подключить здравый смысл. Андроид - все ищут бесплатные (с рекламой)
    Яблоко - программы в основном платные
    Ответ написан
    1 комментарий