• Какой хостинг выбрать для ТГ бота на .Net?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Боты используют лонг-поллинг, поэтому DNS имя покупать/арендовать не надо, ровно как и платить за HTTP траффик приходящий (запросы). P.S. если ты на кол-беках делаешь, то надо.

    В данном случае подойдет любой хостинг, который поддерживает контейнеры.
    Такими могут служить:
    - Яндекс.Облако
    - Selectel
    - Hostinger
    - Digital Ocean

    и т.д. Просто вбиваешь - хостинг докер контейнеров.

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

    Лично я пользовался яндекс облаком - разворачивал полноценный Backend-Frontend на докеркомпозе. При регистрации дают бесплатные деньги (около 3тыс.)
    Ответ написан
    5 комментариев
  • Почему файл не выполняется под пользователем user1?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    suid работает к тем командам, которые собственно создают процесс.
    В случае скриптов, процесс создает не /path/to/script.sh, а /usr/bin/bash, поэтому и suid следует ставить на /usr/bin/bash

    И так со ВСЕМИ скриптами.
    Используйте sudo, su или runuser
    Ответ написан
    1 комментарий
  • Как привязать свой ssl сертификат к домену на aws?

    @vitaly_il1
    DevOps Consulting
    Это не тот сертификат.
    Нужно сделать две вещи
    1) выпустить сертификат в AWS ACM https://aws.amazon.com/certificate-manager/
    2) привязать его к AWS ALB
    Ответ написан
    4 комментария
  • Как в линукс проверить, запущено ли net приложение?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Process.StartInfo в этом свойстве есть ArgumentList. Там и смотрите параметры запуска.
    А еще дотнет делает исполняемый (ELF) файл для запуска, можно через него запускать, а не через dotnet.
    Ответ написан
    2 комментария
  • Почему не получается подключиться к postgresql по имени контейнера?

    smilingcheater
    @smilingcheater
    Потому что надо указывать имя хоста для подключения в том виде, в котором он описан в docke-compose-файле, т.е. "postgres"
    Потому что реальное имя контейнера зависит от параметров запуска, про которые контейнер ничего не знает, поэтому докер внутри контейнера прописывает алиасы к другим контейнерам по их именам в compose-файле

    $dbconn = pg_connect("host=postgres port=5432 dbname=messenger user=admin password=root")
    Ответ написан
    1 комментарий
  • В чем отличие ngnix от golang?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну раз с фронта пересели, то аналогию понять должны: В чëм отличие Google Chrome от JavaScript?
    Ответ написан
    3 комментария
  • Почему в linux подобных системах нет привычных установщиков программ?

    @pfg21
    ex-турист
    все есть :)
    те же deb rpm и иже с ними есть аналог msi (точнее наоборот :) сколь знаю в msi аккурат и слизали систему пакетов линухи)
    пример выкладывания в виде отдельного пакета rclone

    exe -установщики есть и много, к примеру https://makeself.io
    пример самоустанавливающегося исполняемого файла под линуху смотри в virtualbox ссылка ​All distributions

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

    а вот систему сторонних репозиториев некрософтеры так и не стырили, а зря.

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

    в *никсе все привыкли к репозиториям - они удобнее и на порядок защищеннее скачиваний exe-шников инсталяков. потому отдельных exe-шников практически нет - они не нужны.
    Ответ написан
    3 комментария
  • Почему в linux подобных системах нет привычных установщиков программ?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Чтобы отсеивать любителей ШИНДОВС ))

    А если серьёзно, то программы прекрасно ставятся из того же *.deb файла, типа *.exe в ШИНДОВС.
    Ответ написан
    4 комментария
  • Почему в linux подобных системах нет привычных установщиков программ?

    @AlexVWill
    Потому что Windows изначально строился на другой идеологии - что приложения пишутся как законченный продукт. И допускается его изменение только автором программы. Поэтому установка осуществляется скомпилированным файлом ехе, в который пользователю лазить не надо.
    В NIX-подобных системах все было заточено на opensource и на online работу. Поэтому и появились репозитории, где исходный код, который надо собрать самому под конкретную систему, потом в них добавили apt, т.е. поддержку пакетов, сконфигурированных уже под конкретную систему. И это хорошо, потому что установка и обновление конкретных приложений идет не непойми откуда, а из четко понятного места.
    Ответ написан
    5 комментариев
  • Почему файл не выполняется под пользователем user1?

    @SunTechnik
    Для bash скриптов suid бит не работает.

    Можно попытаться в заголовке файла изменить:
    #! /bin/bash
    На
    #! /bin/bash -p
    Или на
    #! /bin/sh -p

    Но у sh есть некоторые отличия в синтаксисе.

    Для perl скриптов suid работает.

    Поиск в интернете по ключевым словам: bash suid script
    Ответ написан
    3 комментария
  • Почему файл не выполняется под пользователем user1?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Биты setuid/setgid не работают со скриптами. Они работают только с двоичными исполняемыми файлами. Скрипт -- это текстовый файл интерпретируемый другой программой. Чтобы выполнить скрипт под другим пользователем воспользуйтесь командой sudo.
    Ответ написан
    Комментировать
  • Не слетит ли windows после обновления Linux?

    @none7
    Есть нюанс. В Ubuntu 22.04 в настройках GRUB была снята проверка наличия винды. Её не будет в списке GRUB, но это можно изменить. Через UEFI всё будет работать как и работало. На более старых версиях Ubuntu проблем не будет.
    Ответ написан
    3 комментария
  • Какие книги можете посоветовать о алгоритмической и низкоуровневой разработки для уровня мидла?

    @res2001
    Developer, ex-admin
    Алгоритмы это классно, книга Кормена закроет большую часть вопросов по ним.
    По ассемблеру (в т.ч. и для АРМ) есть несколько толстых красивых книг у издательства ДМК пресс, можешь поискать у них на сайте. Не читал. Думаю, что не стоит пока туда лезть, разве что очень-очень руки чешутся.

    Из того, что реально необходимо в большинстве проектов:
    1. параллельное программирование: Энтони Уильмс C++. Практика многопоточного программирования
    2. сетевое программирование: Уильям Стивенс UNIX: Разработка сетевых приложений
    3. Разработка под линукс: Керриск Майкл Linux API. Исчерпывающее руководство
    4. базы данных. Тут очень много книг и много вариантов так что советовать ничего не буду, но стоит освоить работу хотя бы с одной реляционной базой данных и знать SQL. Рекомендую смотреть в сторону Postgres.
    Ответ написан
    Комментировать
  • Не слетит ли windows после обновления Linux?

    Adamos
    @Adamos
    Винда может слететь после обновления Убунты.
    Винда может слететь до обновления Убунты.
    Винда может слететь без обновления Убунты.
    Слеты Винды вообще никак не коррелируют с другими системами.

    Писать заново загрузчик при обновлении Убунте незачем.
    Груб обновит свою конфигурацию - но виндовский загрузчик он обычно находит без проблем, если он не подключен через какие-нибудь железные трюки.
    Кстати, уже пришло время обновиться на 22.04.
    Ответ написан
  • Не слетит ли windows после обновления Linux?

    не должно
    Ответ написан
    Комментировать
  • Как найти работу со сложными и комплексными проектами если нету опыта работы в таких проектах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    У большинства программистов первое рабочее место - это унылая маленькая компания с примитивными технологиями и простыми задачами. Следующая работа немного лучше. Следующая ещё лучше. И так пока не заберëшься на максимально доступную тебе высоту. Потолок и скорость развития у всех разные, зависят в основном от того, на сколько сильно стараешься. Некоторые так никогда и не выбираются из эникейщиков и крутильщиков cms'ок. Немало тех, кто выбирается лет десять.
    Ответ написан
    Комментировать
  • Как скрыть код на питоне на мини-компьютере от пользвователя?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Решение, которое позволит поднять стоимость реверса Вашего приложения до неприличного значения:
    1. Обфусцируем код через https://github.com/dashingsoft/pyarmor .
    2. Перегоняем п1. через https://github.com/Nuitka/Nuitka в сишный код.
    3. Компилим п2. в машинный код.
    4. Запускаем п3. exe-шник на клиенте.

    Получаем:
    1. Увеличение производительности.
    2. Exe-шник из машинного кода.
    Ответ написан
    3 комментария
  • Часто ли телеграм боты подвергаются атакам и как вы этого избегаете?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    ЭЭЭ видимо так
    https://n0a.pw/telegram-get-remote-ip/
    Ответ написан
    Комментировать
  • Часто ли телеграм боты подвергаются атакам и как вы этого избегаете?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала что значит "атака"? Какую угрозу ты ожидаешь? Потому что ответы будут ОЧЕНЬ разные в зависимости от этого.

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

    Зафлудить бота запросами? С одного аккаунта не получится, а с многих - недёшево. Кому ты нужен за такие деньги?

    Потыкать команды бота на пример SQL-инъекции? Если бот вообще использует БД, достаточно использовать стандартные средства подстановки параметров в запросы, а не колхозить SQL чере зформатирование строк.

    Угнать бота? Не пости его токен никуда. Если хранишь исходный код в какой-то системе хранения версий - храни токен в отдельном файле и добавь его в исключения. Если есть подозрение, что токен уже уплыл - меняй его у BotFather. А угон акка разработчика - это другая песня уже.

    Короче, ответь хотя бы для себя на вопросы:
    1. чего конкретно боишься?
    2. кому конкретно ты нужен?
    Ответ написан
    2 комментария
  • How docker compose push?

    Erik_Mironov
    @Erik_Mironov
    Старые вопросы: *Dies from cringe*
    1.Использование одного образа для разных сервисов: В вашем файле docker-compose.yml все три сервиса (app, webserver и db) используют один и тот же образ cubinez85/docker_compose/web:latest. Это неправильно, так как каждый из этих сервисов должен иметь свой образ, настроенный для конкретной задачи.

    2.Конфигурация NGINX: Если ваш NGINX не настроен правильно, он не сможет перенаправлять запросы на PHP контейнер. Вам нужно удостовериться, что конфигурация NGINX правильно перенаправляет запросы на fastcgi_pass адрес вашего PHP контейнера.

    3.Настройка PHP-FPM: Убедитесь, что PHP-FPM в вашем app контейнере настроен для прослушивания соединений (обычно это делается с помощью listen = 9000 в файле www.conf).

    Измените docker-compose.yml:
    version: '3.7'
    services:
        app:
            build: ${PWD}/fpm/
            image: cubinez85/docker_compose/app:latest
            container_name: app
            volumes:
                - ${PWD}/code:/data
            networks:
                - app-network
    
        webserver:
            build: ${PWD}/nginx/
            image: cubinez85/docker_compose/nginx:latest
            container_name: webserver
            volumes:
                - ${PWD}/code:/data
            ports:
                - "80:80"
                - "443:443"
            networks:
                - app-network
    
        db:
            image: mysql:latest
            container_name: db
            ports:
                - "3306:3306"
            environment:
                MYSQL_DATABASE: ${MYSQL_DATABASE}
                MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
            volumes:
                - ${PWD}/dbdata:/var/lib/mysql
            networks:
                - app-network
    
    networks:
        app-network:
            driver: bridge


    Убедитесь что в nginx.conf есть что-то вроде:
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        ...
    }

    Здесь app:9000 указывает на ваш PHP контейнер и порт 9000, который слушает PHP-FPM.
    Ответ написан
    7 комментариев