Задать вопрос
  • Как отправить telegram stars от бота?

    shurshur
    @shurshur
    inputStorePaymentStarsGift это метод клиентского API, не Bot API.
    Написано
  • Возможно ли использовать ИИ для сравнения текста?

    shurshur
    @shurshur
    Риск того, что алгоритм посчитает Foo BAR-123v1 и Foo BAR-123v1a одинаковыми огромен! Поэтому автоматизировать только очень аккуратно! Заодно осторожнее с описаниями. Например, пусть v1 имеет разъём USB 3.0, а v1a - USB 3.2. В описании при этом может быть написано USB3, USBv3 и др. вариации, без указания минорной версии, и это может легко обмануть алгоритм, заставив его перепутать устройства. Про человеческие ошибки там я уже не говорю...
    Написано
  • Как исправить ошибку "requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension."?

    shurshur
    @shurshur
    Hfnas, каждый RUN создаёт новый слой в системе образа. Например, если сделать так:

    RUN apt install awesome-app
    RUN wget http://example.com/download/another.zip
    RUN unzip another.zip
    RUN ./another/install
    RUN rm -rf another another.zip /var/cache/apt/archives/*


    То будет создано 5 слоёв, в которых будут все пакеты, установленные apt, скачанный архив, распакованный архив... Ведь слоёная файловая система так и работает: поверх одного слоя создаётся следующий, в котором только изменившиеся файлы, в данном случае удалённые файлы из предыдущего слоя никуда не денутся.

    Чтобы этого избежать, следует скачивание/установку/очистку объединять в один RUN, чтобы получался слой, в котором добавлены новые файлы и удалены промежуточные:

    RUN apt install awesome-app \
     && rm -rf another another.zip /var/cache/apt/archives/*
    RUN wget http://example.com/download/another.zip \
     && unzip another.zip \
     && ./another/install


    Или даже в один RUN:

    RUN apt install awesome-app \
     && rm -rf another another.zip /var/cache/apt/archives/* \
     && wget http://example.com/download/another.zip \
     && unzip another.zip \
     && ./another/install


    Ещё одна методика полезна, когда в процессе сборки образа ставятся разные дополнительные инструменты (компиляторы, сборщики, минимизаторы итд), которые в конечном итоге не нужны. Это может быть удобнее собирать с помощью multi-stage build: сначала собирается образ, в который ставится всё необходимое и делается сборка, потом создаётся новый образ, в который копируется только результат без промежуточных файлов и инструментария (например, только упакованная js-сборка и разная заранее подготовленная статика). Искать инструкции и примеры по словам "docker multi-stage build".
    Написано
  • Не понимаю, почему происходит потеря пакетов. Как решить?

    shurshur
    @shurshur
    cashcashh, сяоми очень неровные (может попасться что угодно) плюс у многих моделей много проблем с перепрошивкой на OpenWrt, а это признак того, что в случае проблем с функционалом или глюками софта его даже не перепрошить.
    Написано
  • Как в EF Core (Npgsql) указать владельца базы данных и ее таблиц?

    shurshur
    @shurshur
    ALTER TABLE таблица OWNER TO новый_владелец;

    Для всех таблиц в цикле. Можно, наверное, скрипт написать, но раз у нас всё равно приложение это делает, то ничто не мешает перебрать в нём.

    По доке кажется, что ALTER TABLE ALL IN TABLESPACE public можно сделать только с операцией SET TABLESPACE, а жаль, я бы не против OWNER TO тоже так делать.

    До кучи, можно при создании базы указать владельца:

    CREATE DATABASE база OWNER владелец;

    А потом законнектиться владельцем и уже им всё создавать.

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

    ALTER ROLE имя_пользователя CREATEDB;
    Написано
  • Что случилось с Ubuntu Server?

    shurshur
    @shurshur
    shupike, вплне может быть. Когда этот новый инсталлятор вместо классического debian-installer сделали, я порядком помучился, особенно с сетевой установкой, при которой там полный iso качался с удалённого сервера ДВА РАЗА в оперативную память. А это ведь dvd, значит, памяти нужно было приличное количество...
    Написано
  • Комфортно ли будет использовать linux через портативный m2?

    shurshur
    @shurshur
    Технически - да, будет работать, если usb3 и нет высоких требований по скорости доступа к диску. Ну там в браузере серфиться и файлики редактировать вообще не вопрос. Но оптимальнее иметь не переносной диск, а переносной компьютер.
    Написано
  • Может ли юзер нести ответственность за просматриваемый контент?

    shurshur
    @shurshur
    Как правило нет (но за все страны и все ситуации ручаться не стоит), потому что пользователь не может знать содержание видео до его просмотра. Плюс сейчас auto play видео часто бывает, из-за чего пользователь может просмотреть видео, даже не успев прочитать его название.
    Написано
  • Каким образом запустить и провести калькуляции с файлом excel, не открывая excel?

    shurshur
    @shurshur
    Я поддержку предыдущего оратора.

    Формулы в Excel это всегда лютый ад, в котором хрен разберёшься.

    Алгоритм надо описать текстом или вразумительным кодом с комментариями. Чтобы будущие поколения могли его переписать на любой удобный язык, а не страдали вот этим антипаттерном во веки веков.
    Написано
  • Как Telegram бот может отправить ссылку для отправки SMS?

    shurshur
    @shurshur
    Давать ссылку на http, который редиректит на sms?
    Написано
  • Как сделать Slice Database более 20TB?

    shurshur
    @shurshur
    Можно констрейнты не удалять, а вместо этого делать каскадное удаление, чтобы база сама вытерла связанные записи. Но это, конечно, будет базозависимое.

    Но скорее всего автора волнует, что 20 Тб скопировать это такое себе удовольствие.
    Написано
  • Как в вашей компании обеспечивается установка пакетов и обслуживание репозиториев?

    shurshur
    @shurshur
    rPman, для pip у нас даже вроде делали. Но я не пользовался, штучные пакеты через wheel таскал.

    Образа просто в локальный registry переливал, в том числе и не с докерхаба.

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

    shurshur
    @shurshur
    rPman, если фильтровать по архитектурам и релизам - сильно уменьшится.

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

    Что в репозиториях не последняя версия - это известное дело. Это так в любой репе. Даже в rolling-дистрибутивах сложно достичь настоящей актуальности - а ведь есть ещё вопрос стабильности и консистентности, который в релизах достигается именно через заморозку и массовое тестирование только выбранных сочетаний версий.

    Когда нужно специфический софт определённой версии, его можно собрать отдельно, в виде пакетов, AppImage итд итп. В конце концов, контейнеры...
    Написано
  • Как скрыть наличие вкл. Впн от Билайн?

    shurshur
    @shurshur
    Бесплатная работа соцсетей никак не связана с работой VPN. Соцсети и другие сетевые сервисы были бесплатны (в рамках стандартного тарифа или дополнительных услуг) только при доступе к ним мимо VPN.
    Написано
  • Какие посоветуете учебники по вышмату?

    shurshur
    @shurshur
    Pagidze, из того что не упоминали - математическая логика и теория алгоритмов (вычислимость, машина Тьюринга итд).
    Написано
  • Почему обновленный ключ по времени выдает ошибку прав доступа?

    shurshur
    @shurshur
    А если прописать ключ у себя в системе и попробовать ssh -v git@gitlab.com?
    Написано
  • Как сделать функцию с call и message в pytelebot?

    shurshur
    @shurshur
    Стёпа, в коде в пблоке else делается отправка нескольких сообещений.

    Надо начвать мыслить принципиально иначе. Бот не делает последовательные действия. Бот реагирует на СОБЫТИЯ, генерируемые пользователем. Пользователь нажал /start - событие. Пользователь ввёл текст - событие. Пользователь нажал на кнопку - событие.

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

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

    И в обработчике кнопки тоже можно выставлять обработчик следующего сообщения.

    А в куске кода в вопросе в блоке else просто выполняется сразу - не в ответ на события, а прям сразу - несколько противоречивых действий по отправке сообщений.

    Причём и сама функция фиг знает чём. Там параметр call, а внутри функции есть ещё непонятно откуда message.

    В общем, советую сначала разобраться с этим. Понять общий принцип работы. Написать пока просто часть без кнопок, которая спросит у пользователя все вопросы и примет заявку. И дальше уже потом усложня.
    Написано
  • Как перенести Whatsapp с одного ПК на другой?

    shurshur
    @shurshur
    WA в любом случае ставится на телефон, а потом телефонным клиентом сканируется QR-код. Вот через этот QR-код и надо авторизоваться на новом компе.
    Написано