Задать вопрос
  • Реклама в моем телеграм канале без разрешения?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    1. Есть реклама самого телеграма. Выглядит как отдельный рекламный пост (чаще всего в конце канала, но иногда в длинном списке непрочитанных постов может быть и посреди них). Пользователи Telegram Premium эту реклмау не видят, и скорее всего у тебя как раз включён Premium, а у знакомого - нет.

    2. Ещё если пользователь использует сторонний MTProto proxy для подключения в телегу, то телега позволяет прокси показывать пользователю дополнительные "спонсорские" каналы в списке.

    3. Ну и бывают сторонние клиенты, разработчики которых тоже могут пихать свою рекламу. Такой вариант тоже возможен.
    Ответ написан
    3 комментария
  • Как передать реальный IP при переадресации NAT с помощью iptables?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно убрать SNAT в POSTROUTING и на приёмнике маршрутизировать ответные пакеты в VPN. Тогда сервер-получатель будет видеть реальные адреса. Но придётся или весь интернет на той стороне завернуть в VPN (сделать дефолтный роут в VPN, что может быть неприемлемо), или упражняться с policy routing.

    Объяснения по поводу настройки policy routing см. Сложная маршрутизация на linux роутере. Как правильно готовить policy based routing?

    Второй вариант - поставить на VPS nginx и передавать IP в заголовках http. На той стороне доработать/донастроить своё веб-приложение, что оно умело брать IP из заголовка X-Forwarded-For или X-Real-Ip. Но это только для http.
    Ответ написан
    2 комментария
  • Как смонтировать сетевую папку из Windows на чтение и запись без рута в Debian 13?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно использовать gvfs-mount или в более новых версиях gio mount, рут не требуется. Для поддержки smb надо будет поставить gvfs-backends. Шара будет смонтирована в ~/.gvfs или /run/user/UID/gvfs. В графических файловых менеджерах (thunar, dolphin, doublecmd итд) должно отражаться как сетевой диск. В них же часто можно вручную подключить smb://-ссылку через строку адреса или отдельный пункт меню и даже добавить её в закладки, чтобы она там всегда была.

    Прям сейчас запустил vlc и нашёл смонтированную таким образом сетевую шару в разделе other locations - networks при открытии файла.
    Ответ написан
    Комментировать
  • Хороший ли вариант использовать Wordpress для API форума?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если это будет именно "форум", с разделами, темами итд, то нет, WP не очень подходит для этого. У него и дизайн не такой, и структура базы, так что допиливать придётся много. И прямо на php, не такой знакоый js-код на фронте. До кучи, допиливать придётся и плагины. Богатство WP и одновременно его ахиллесова пята - это именно плагины - без них его практически никто не использует, но их регулярно приходится доделывать под многочисленные нюансы конкретной инсталляции. А использование "не по назначению" это очень даже большой нюанс.

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

    PS: С точки зрения минимизации расходов на инфраструктуру и разработку оптимально вообще не делать фронт-бэк архитектуру и какой-то сложный кастом. Это лишние усилия и ресурсы на внедрение и самое главное поддержание (то, что многие недооценивают!), а большого смысла для собственно "форумной" функциональности тут вообще нет. Поэтому я бы посоветовал ограничиться стандартным популярным движком, подходящим под нужную задачу и активно поддерживаемым разработчиками, а не пилить свой очень слишком мудрый комбайн.
    Ответ написан
    3 комментария
  • Физическое устройство для управления Ubuntu Server?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если близко к "серверу" есть устройства (монитор/клавиатура/мышь), подключенные к обычному компьютеру или ноутбуку, то простой вариант это поставить KVM Switch. Тогда переключаться на "сервер" можно будет буквально одной кнопкой.
    Ответ написан
  • Продвинутые пользовательские стили сайтов, не ограниченные одним css?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Необязательно использовать юзерскрипты (хотя они тоже бывают полезны), переопределить только css можно с помощью расширения Stylus https://github.com/openstyles/stylus
    Ответ написан
    1 комментарий
  • Как установить библиотеки python вручную?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    На самом деле, если это нужно для работы, то просто идём и запрашиваем доступ. Нужно - значит нужно. Или пусть предлагают разумные варианты в рамках своего театра безопасности, чтобы можно было просто спокойно работать и ставить необходимое, не тратить кучу сил и времени на слабоэффективные телодвижения.

    Но если уж очень надо, то можно обойтись своими силами и перенести пакеты вручную.

    Делаем pip download нужный_пакет, получаем много файлов (с зависимостями). Эти файлы закидываем на целевой хост и устанавливаем по инструкции из интернета "pip install from local directory".

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

    docker run -it --rm -v `pwd`/pkg:/pkg centos:7.7.1908


    Внутри ставил python3.6, всякие нужные библиотеки (мне там нужно было ldap, postgres-devel и всякое такое) и делал pip download в /pkg.

    В целом, можно и свой микрорепозиторий пакетов сделать вместо pypi.

    Таков путь.
    Ответ написан
    Комментировать
  • Как настроить доступ к сайту?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Поддержка же ответила. Запускать надо на порту 8000:

    python manage.py runserver 0.0.0.0:8000

    UPD: Оказалось проблема в firewall (ufw).
    Ответ написан
    2 комментария
  • Как отправить подарок от имени бота телеграм?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Метод есть: https://core.telegram.org/bots/api#sendgift

    Если в любимой библиотеке этот метод ещё не реализовали в свежей версии, всегда можно вызвать метод напрямую мимо библиотеки:
    https://api.telegam.org/bot{TOKEN}/sendGift?user_id={id_юзера}&gift_id={id_подарка}&pay_for_upgrade=True


    Тут pay_for_upgrade управляет тем, оплатит ли подарок бот со своего баланса или юзеру придётся самому его оплатить.
    Ответ написан
  • Как в контейнере opensuse/tumbleweed добавить локаль 866?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Внутри контейнера надо отдельно сгенерировать эту локаль:

    localedef -i ru_RU -f IBM866 ru_RU.IBM866

    (тут локаль будет названа ru_RU.IBM866, но можно назвать как угодно, в том числе ru_RU.CP866 upd: лучше так не делать и оставить имя с названием кодировки по умолчанию, см. комментарии).

    Рецепт работает в любом Linux, но в минималистичных образах обычно много чего вырезают для уменьшения размера, поэтому каталог /usr/share/i18n пустой или значительно подчищен. В случае с opensuse нужно доустановить пакет glibc-i18ndata.

    Образец Dockerfile:

    FROM opensuse/tumbleweed
    
    RUN zypper in -y glibc-i18ndata && localedef -i ru_RU -f IBM866 ru_RU.IBM866
    ENV LC_ALL=ru_RU.IBM866
    Ответ написан
    8 комментариев
  • Как передать UTM-метки с сайта в AMO Crm через Whatsapp?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нельзя. В WhatsApp Business API максимум можно сохранить реферал из фейсбучной рекламы (если клиент придёт из неё), просто ссылку повесить и получить из неё какие-то параметры даже там не получится.

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Отредактировать сообщение с заменой клавиатуры:
    msg = bot.send_message(chat_id=my_chat_id, text='Привет', reply_markup=первая_клавиатура)
    bot.edit_message_text(chat_id=my_chat_id, message_id=msg.message_id, text='Привет ещё раз', reply_markup=вторая_клавиатура)
    Ответ написан
    Комментировать
  • Как сделать так, чтобы рамка не разрывалась между страницами?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Самое простое - обернуть в \begin{samepage} ... \end{samepage}. Это может помочь.

    Но это, строго говоря, не гарантирует неразрыв всего блока, а лишь делает "высокий штраф" на разрыв внутри него.

    Можно также вручную напихать внутрь блока \nopagebreak между всеми абзацами или использовать хуки (в достаточно новом LaTeX) как в этом ответе.
    Ответ написан
    Комментировать
  • Безопасно ли загружаться с загрузочной дискеты MS-DOS?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Поддержка NTFS есть только сторонними средствами (кажется, от Paragon Software например).

    Поддержка LFN на FAT есть с помощью сторонней утилиты doslfn. Но работает не особо эффективно и ещё кажется оно не умело в кэширование с диска, что очень чувствовалось. Нужно ещё понимать, что крайне мало софта для DOS умеет работать с LFN, буквально редкие экземпляры. Типа DOS Navigator и самых последних версий Volkov Commander.

    Кстати, я ещё находил какое-то решение, которое позволяло некоторые консольные win32-приложения запускать в DOS. В частности, после отключения пары неработавших плагинов завёлся Far 1.7 и даже с поддержкой LFN.

    Кэширование нативное в DOS отсутствует полностью, и это весьма заметно, что все операции синхронно производятся с диском. Но есть сторонние средства, в том числе решение от Microsoft - smartdrv.

    Если специально ничего не делать деструктивного, то DOS просто не будет видеть разделов NTFS вообще и ничего не сломает.

    В целом, если хочется поддержки NTFS, более перспективно LiveCD с виндой. Я когда-то сто лет назад для себя сделал из XP упрощённый LiveCD с одним cmd.exe в качестве Shell, который запускался на тестовой виртуалке всего с 24 Мб оперативной памяти. Вполне годится для замены Recovery Shell в случае если он не запускается.
    Ответ написан
    Комментировать
  • Почему не заканчивается обнова meta quest 3?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Так ведь очевидно, что обнова качается из интернетов, а эта ваша Meta в России запрещена.
    Ответ написан
  • Допустимо ли хранить логи nodejs приложения в mysql бд или есть решения лучше?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Смотря что именно логгируется и для чего используется. Например, во многих CMS (админпанели, блоги итд) существует "логгирование действий пользователей" и оно традиционно использует базу. Ибо именно из базы удобнее и проще всего через web это показывать.

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

    Также плохое решение использовать console.log. Нужно использовать специальные библиотеки для логгирования, они есть под любые развитые языки. Например, такие, как winston для node.js. Библиотки позволяют настраивать уровень логгирования, транспорт (файлы/syslog/итд), что позволит написанный один раз код потом не переделывать под другие реалии (запуск в кубере, запуск для тестов на машине разработчика итд итп).

    В процессе развития и роста можно будет уже приделывать Elastic/OpenSearch, vector, greylog, logstash итд итп в зависимости от потребностей. Для пет-проекта это, скорее всего, не нужно. Но даже для пет-проекта полезно учиться правильным практикам. Чтобы потом хорошо делать в больших и сложных.
    Ответ написан
    Комментировать
  • Можно ли создавать и сохранять LaTeX-изображения в Node.js?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Многие приложения ещё лет 20 назад решали такое через внешний вызов tex, например, mediawiki и moodle.

    Покопался в интернетах, в основном все используют jsmath/mathjax/katex для того чтобы получить html-версию формулы. Также есть проекты, которые генерят pdf, в том числе с помощью нативного js-кода на базе трансляции web в js (texlive.js, latex.js). Сделал ли кто-то аналогичное для получения только картинок - я не нашёл, но может недостаточно глубоко искал.

    В этом видео предлагается делать screenshot формулы, отрендеренной mathjax. Такое себе...

    Возможно, имеет смысл зайти через MathML, если что-то умеет его рендерить и если есть конвертеры \TeX-а в MathML.

    Что интересно, решения для питона гуглятся сразу - например, sympy умеет \TeX-формулы.

    Материала для экспериментов и возможно дальнейшего поиска уже набралось. А вообще, \TeX{} не очень предназначен для встраивания~--- он всегда был "вещью в себе" для создания полноценных документов с его помощью.
    Ответ написан
    Комментировать
  • Какой функционал доступен у Whatsapp бизнес?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    WhatsApp Business - это обычный клиент WA для телефона со своим номером, только с дополнительными функциями для бизнеса. Подключать в него "обычные номера" нельзя. Клиент ставится на один телефон и только на одном и можно работать от имени бизнеса. Для маленьких бизнесов самое то, что ставится всего одно приложение и оно закрывает все потребности.

    Чтобы могли работать разные сотрудники, чтобы была история, аналитика, средства рассылок, интеграция с чат-ботом итд итп - это в сторону WhatsApp Business API и различным решениям под него. Их довольно много. Например, есть интеграции в битриксе или в живосайте.
    Ответ написан
    Комментировать
  • Почему с фильтром PostgreSQL выдаёт больше записей?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что time_start у некоторых, пришедших не в этом году, имеет invoice_id is null по старым записям. Раньше эти записи попадали в предыдущие года и давали min(time_start) в прошлом, а после дополнительного условия time_start у всех отобранных попадает уже в текущий год и min(time_start) попадает в условие отбора.
    Ответ написан
    Комментировать
  • Можно ли C/CD в гитлаб настроить на всю группу?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно в настройках репозитория указывать путь к внешнему gitlab-ci.yml в другом репозитории. Тогда он может быть один на всех и в каждую репу его добавлять не нужно и изменения файла можно делать только в одном месте.
    Ответ написан
    2 комментария