Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр «Рецепт счастья» — захватывающая игра в жанре «соедини предметы»! Помогите Эмили разгадать тайну исчезновения родственника, отыскать спрятанные сокровища и вернуть к жизни её уютное кафе.

Рецепт Счастья

Казуальные, Головоломки, Новеллы

Играть

Топ прошлой недели

  • Oskanov Oskanov 9 постов
  • Animalrescueed Animalrescueed 44 поста
  • Antropogenez Antropogenez 18 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
11
ProgTime
ProgTime
Лига программистов

Обновления Telegram-бота для технической поддержки: API для внешних источников и новые возможности⁠⁠

4 месяца назад

Всем привет! Вы просили - я сделал! Я выпустил релиз №3 для бота технической поддержки на GitHub.

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

За последний месяц ко мне поступило несколько запросов расширить функционал бота за счёт подключения новых источников трафика. Изначально я думал добавить интеграции с популярными мессенджерами, такими как WhatsApp или Viber. Но в итоге решил, что в первую очередь стоит реализовать API, чтобы вы сами могли подключать любые свои источники.

В этой статье расскажу о новом API для подключения внешних источников — живых чатов, CRM и других систем, а также о других важных обновлениях и планах на будущее.

Предисловие

Для тех, кто не знаком с проектом: TG Support Bot — это бот на Laravel, который объединяет клиентов и менеджеров через Telegram и ВКонтакте, скрывая личные аккаунты и маршрутизируя общение через темы в Telegram-группе.

https://github.com/prog-time/tg-support-bot

Пользователь пишет боту, сообщение автоматически пересылается в выделенную тему для менеджеров, а их ответы возвращаются обратно от имени бота — так сохраняется приватность и удобство общения.

Буду благодарен, если вы поддержите мой проект ⭐ на GitHub!

Руководство по установки

Я записал видео-инструкцию для установки данного решения на VPS с предустановленным Docker Compose.

Youtube - https://youtu.be/yNiNtFWOF2w

Rutube - https://rutube.ru/video/bdd0cc5ab4e13530fd7e0c2413931211/

ВК Видео - https://vkvideo.ru/video-141526561_456239132

Обратная связь

Для улучшения коммуникации с пользователями, я создал группу в Telegram, в которой вы можете задавать свои вопросы и писать предложения по расширению функционала.

https://t.me/pt_tg_support

Также сюда будут публиковаться новости по выпуску обновлений.

API — не альтернатива мессенджерам, а универсальный инструмент

Хочу сразу уточнить: разработка API не заменяет расширение списка поддерживаемых мессенджеров и соцсетей. Я продолжаю работать над интеграциями с ними и буду добавлять новые источники трафика.

Однако API необходим для подключения кастомных источников — живых чатов, CRM-систем, форм на сайте и других нестандартных каналов.

Что входит в первую версию API?

В API реализованы базовые маршруты для работы с сообщениями:

  • GET api/external/messages — получение списка сообщений с возможностью фильтрации

  • GET api/external/messages/{id_message} — получение конкретного сообщения по ID

  • POST api/external/messages — отправка нового сообщения

  • PUT api/external/messages — изменение существующего сообщения

  • DELETE api/external/messages — удаление сообщения

Для работы с API необходимо создать пользователя и сгенерировать для него API-токен. Рекомендую создавать отдельного пользователя под каждый источник.

Создать пользователя и токен можно командой:

php artisan app:generate-token {название_источника}

Также нужно прикрепить к источнику ресурс, куда будут поступать сообщения от обработчика.

Как это работает?

Процесс довольно простой:

  1. На вашей стороне генерируется уникальный ID пользователя — это может быть хэш ключ или любой уникальный идентификатор.

  2. При отправке сообщения в тело запроса передаются: ID пользователя, код источника, текст сообщения и, при необходимости, файлы.

  3. Система идентифицирует пользователя или создаёт новую запись, если это первое сообщение от него.

  4. Сообщение из вашего источника направляется в Telegram-группу поддержки.

Менеджеры в группе, как и раньше, могут отвечать любыми типами сообщений. Текст отправляется как текст, остальные — конвертируются в файлы. В названии темы указывается ID клиента и источник сообщения.

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

Подробная инструкция по работе с API уже есть в разделе wiki на GitHub.

Добавлены новые консольные команды

Я добавил несколько полезных консольных команд.

php artisan telegram:set-webhook

Artisan команда, которая производит подключения хука бота к вашему проекту. Ранее это делалось через отправку запроса в telegram или по специальной ссылке, а теперь это можно сделать запустив команду в консоле.

php artisan app:generate-token

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

Swagger для API

Для API был разработан генератор swagger документа.

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

Принцип прост! Вы описываете документацию по частям в resources/swagger. Важно граматно подходить к именованию файлов и компонентов.

После создания структуры, вы запускаете artisan команду и документация собирается в единый документ.

php artisan swagger:generate

На выходе вы получаете 2 версии документации

  1. В формате json, которую можно использовать для нейросетей или программ

  2. В формате Swagger-ui для просмотра в браузере

Мелкие доработки

  • Улучшено логирование ошибок — все логи теперь доступны в Grafana;

  • Исправил баги, о которых вы писали в Issues;

  • Добавил контейнер redisinsight для просмотра Redis данных через WEB интерфейс;

  • Переписал инструкции для подключения и настройки бота;

Спасибо всем за поддержку и обратную связь! Продолжаю работать над улучшениями и буду рад новым предложениям и вопросам.

Если нужно, могу помочь с примерами использования API или подсказать, как правильно настроить интеграцию.

Показать полностью 2
[моё] Программирование Чат-бот Стартап PHP Laravel Docker IT Open Source Telegram Длиннопост
0
19
timoil94

Смотрим фильмы через торрент на Apple TV⁠⁠

4 месяца назад

Что потребуется: Любой домашний сервер или ПК с докером, Apple TV и приложение Luxo Video Player. На всё это уйдёт 10 минут времени. Вся информация предоставлена для образовательных целях.

Что получится в итоге? Личный сервер Lampa + TorrServe, на приставке смотрим фильмы без загрузки. Как это будет выглядеть:

Фото из проектора

Фото из проектора

В моём случае будем использовать NAS xpenology.

  1. Ставим Container Manager

2. Открываем установленный Container Manager в разделе "Реестр" пишем immisterio/lampac. Далее выбираем latest и загрузить.

3. Переходим в раздел "Образ", выбираем его, нажимаем "Запустить".

4. Здесь ничего не трогаем, нажимаем "Далее"

5. Добавляем порт 9118, больше ничего не трогаем. Нажимаем "Далее".

6. Нажимаем "Выполнено".

7. Переходим в раздел "Контейнер" и здесь появится созданный контейнер.

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

8. Открываем браузер (ip вашего сервера), например http://192.168.1.111:9118 появится окно первого запуска. Нажимаем "Изменить настройки".

Для друга есть галочка

Для друга есть галочка

9. Теперь берём клубничный смузи и переходим к этапу настройки на Apple TV. Открываем стор и пишем lux. Выбираем приложение с рыбкой.

10. При запуске появится это, подтверждаем.

11. Здесь вводим наш адрес сервера, например: http://192.168.1.111:9118

Мой адрес скрыт т.к сделал через домен.

Мой адрес скрыт т.к сделал через домен.

12. Попадаем в главный экран.

13. Выбираем любой фильм, нажимаем "Смотреть"

14. Здесь "Торренты"

15. Выбираем раздачу

16. Подтверждаем

17. Готово, наслаждаемся фильмом.

Настроить TorrServe можно через http://192.168.1.111:9118/ts например, увеличить кеш.

Подобным образом можно запустить докер контейнер на ПК. Ничего настраивать не нужно. Всё работает бесплатно без СМС и рекламы.

P.S. Да, я знаю про андроид приставки и что там можно это всё запустить и держать локально, по стоимости Apple TV их можно купить ящик. Но есть причины почему я избавился от андроид приставки, а это невозможно в них вывести звук на 2 пары блютус наушников или выводить нормальную HDR картинку без шаманств.

Показать полностью 18
[моё] Docker Apple Торрент Фильмы Онлайн-кинотеатр Synology Инструкция Личный опыт Длиннопост
13
50
DmitriitheFals
Лига Сисадминов
Серия Кудахтеры

Про СПО сектантов, и что с этим делать. Вступление к пособию по карго-культам в ИТ⁠⁠

7 месяцев назад

Для лиги лени: Ничего не делать. Дурака учить — только портить.

Лет, наверное, 10-15 назад, давно – может в 2010, может в 2015, где-то в далекой-далекой галактике происходила очередная битва. Эпические сказания доносят до нас, хотя и в несколько нудноватой форме, величественную картину колоссальных сражений на пустом месте.
Остались с той поры лишь схема бугуртовоза, да Шпаргалка по общению с СПО-сектантами.

С тех пор прошли годы, и время все расставило на свои места.

Microsoft Windows на десктопе живее всех живых, это ужасно раздражает тех, кто с 2000 обещает «год победы Linux на десктопе». Сами MS активно вкладываются в Linux, давно затащив туда .Net и powershell.
Wine живее всех живых, но работает ой как не всегда. Заявления «Да мы! Да сейчас! Как перепишем» - «импортозамещение без глянца» показывает, что никто ничего переписывать не собирался.
Зато теперь какие-то альтернативно одаренные, причем почти исключительно в русскоязычном сообществе, забыли, что GNU's Not UNIX. Деградация части русскоязычного сообщества зашла так далеко, что люди не стесняются писать в резюме «линукс админ», но при этом не знают, что такое GNU.

GNU's Not UNIX.

GNU's Not UNIX.

Что касается Unix и FreeBSD, то они где-то, безусловно, есть. В виде той же доживающей HP-UX 11i v3 – EoL 31 декабря 2025 года.

Что же касается фирм, то:
Microsoft разработала свой Azure Linux, и переезжает на него везде, где можно, вместе умершего, и вернувшегося с клатбища дистрибутивов, Centos.
Linux на телефоне существует в каком-то отдельном закутке, даже Huawei не стал ее тащить. HarmonyOS NEXT. – вообще не Linux, хотя openEuler еще как-то Linux, хотя LiteOS вроде и не Linux.
Red Hat был куплен IBM, теперь в эту нишу лезут корейцы с Naver, с их сборкой из OpenELA.
Если посмотреть на List of Linux distributions, то окажется, что осталось не так много веток:
Debian-based, в том числе Ubuntu-based,
«Импортозамещателям» на заметку. Торговой маркой Debian владеет фирма SPI (Software in the Public Interest ), зарегистрированная в штате Нью-Йорк, США).

Red Hat / RHEL / SUSE / openSUSE, Fedora,
ALT Linux,
И всякие «полезные в ограниченных сценариях» - DD-WRT, Alpine.

Само ядро Linux используется много где, с переменным успехом. Windows в схожих сценариях тоже вполне используется, в прошлом году я летал в Китай – там на турникетах в аэропорту стоит Windows 7 (embedded).
Отдельно отмечу кривые руки импортозаместителей, у которых нет представления о том, что под Linux не пишут код так же криво, как под Windows. Но они умудряются. Как следствие, все, покушавшие большой ложкой «импортозамещения», плачут, что больно каждый раз по новому.

За годы развития ряд продуктов, который должен был бороться со злом, примкнул к нему.

Часть продуктов просто остановилась в развитии. Багфикс и добавление еще одного слоя самоотвердевающего эко-био-френдли клея просто добавляют еще один слой клея.

Весь этот горький катаклизм, который я тут наблюдаю, представляет собой итог завершенного процесса доедания Злыми Корпоратами – маленького, но такого свободного сообщества. Движение есть, результат – прибыль корпораций растет, Злая Корпорация, Добрая Корпорация, и Еще Одна Корпорация – продают свободный продукт и его поддержку за дорого, и за очень дорого.

Итогом движения стало появление Linux эникея. Да, Linux эникей может поставить Ubuntu GUI, и даже запустить 1 (один) контейнер по руководству. Не сложнее, чем на телевизоре канал переключить, тем более что на телевизоре тот же Android, который, когда надо, Linux.

Следующая ветка развития ИТ, извращенная хитрым планом Архитектора Судеб – это devops.

DevOps is the integration and automation of the software development and information technology operations.

DevOps is the integration and automation of the software development and information technology operations.

DevOps is the integration and automation of the software development and information technology operations.

Изначально идея была понятна. Сложность ПО выросла, стало критично убирать самые большие баги до продакшена, и выделять не основную задачу, deploy – на отдельную ветку специалистов.
Но, работать с багами дорого. Та же VMware, даже пока была VMware, решила, что денег нет, поэтому будем тестировать на пользователях. Тащить непроверенное в прод, экономя на юнит тестах, автотестах, интеграции и ручном тестировании, это не российская традиция. Последними ударно выступили CrowdStrike, хотя и Microsoft выступает раз в квартал. Intel выступает так, что один финн постоянно орет, как потерпевший. Что в 2020, что в 2022, что в 2024. Как будто он что-то понимает.

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

Не тут то было. Дружба это магия, а несанкционированная магия это ересь.

Магия - это ересь

Магия - это ересь

Вся идеология девопс сравнительно быстро выродилась в массах в переименование middle Linux-администраторов, которых привлекали к чему угодно. Ansible, terraform, zabbix, ELK – devops. В последние лет, наверное, 5, тенденция называть любого Linux админа – девопсом, приняла в мире, да и в РФ, какие-то ужасающие масштабы. Конечно, этому способствовали и цыганские курсы

цыганские курсы по домикам на колесах

цыганские курсы по домикам на колесах

Следующим карго-культом, пришедшим в массы из мира весьма кровавенького энтерпрайза, стали микросервисы

Первый раз я эти микросервисы и конвейер – недоброкер видел еще в 2005 году, и тогда это называлось «костыли на костылях».

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

 

 

Возникает «новая свежая» идея: давайте сделаем Unix-way, много маленьких сервисов, каждый из которых выполняет одну маленькую задачу. Допустим, обслуживает десяток запросов от пользователей. И второй экземпляр сервиса обслуживает еще десяток. И все это за отказоустойчивым балансером. И все это утыкается в базу данных, которая 10 лет подряд дописывалась до того, чтобы ее планировщик оптимизировал кривые планы запросов, и мог сам балансировать очереди, соблюдая при этом ACID (Atomicity, Consistency, Isolation, Durability). Остались три мелочи: скорость, надежность балансировки, надежность и доступность базы данных

В некоторых сценариях не так важно, как быстро будет обработан запрос внутри системы, за 0.01 или за 0.05 секунды, потому что до потребителя ответ будет идти 0.1 -0.2 секунды. Как от меня до части облака в соседнем регионе.
В некоторых сценариях наоборот, рост с 0.01 до 0.02 секунд на каждом этапе обработки, замедляет работу в сотни раз. Почему так, спросите вы? Да потому, простая математика.
Допустим, у вас приложение формировало сетевой запрос к размещенной на этом же сервере базе данных. Скорость обработки, плюс минус, находится в том же порядке скоростей, что и обработка драйвера в оперативной памяти. Это 0.500 – 0.600 наносекунд, см. CAS latency .
Пользуясь случаем, в очередной раз хочу переделать привет любителям душить одноглазую змею при слове «импортозамещение на 350 нм литографе». Память SDRAM имеет Column address strobe latency в 10 ns, DDR SDRAM – в 3000-5000. DDR5 SDRAM – от 0.208 ns, разница не просто на порядки, а на десятки десятичных порядков. Потому что расстояние 30 нанометров волна проходит быстрее, чем 350, а ячейка размерами 90 на 90 нанометров заполняется в разы быстрее, чем ячейка 1050 на 1050 нанометров. Не только поэтому, конечно, но физика имеет значение. Хотя первое слово все равно приезжало через 22, а сейчас через 15, но восьмое слово приезжает не за 75, а за 11-15 ns.

Если сервис базы данных  уезжает на соседний хост, то и это не беда, но запрос теперь выполняется не 1-2 наносекунды, а на 500 – 600 наносекунд дольше, но все равно выполняется асинхронно (если приложение поддерживает асинхронность), и быстро. И то, на новых аристах обещают 3.95ns per hop и 150ns l3.  

И тут кто-то, как начальник того испанца из ролика (Хуан Хойя Борха) говорит: микросервисы.

Все делим, кладем и готово. Про задержки никто не думает, зачастую со словами «ну какие задержки, у нас 10G сеть, а не хватит 10G – соберем LAG и включим Jumbo frame».
Думать головой никто даже не пытается, путая пропускную способность и задержки. Теоретически, это связанные вещи, если говорить про передачу одного пакета в вакууме. Один пакет отправили, подтверждение получили, еще один пакет отправили.
Только это уже 25 лет не так. Уже 25 лет в TCP есть и TCP window scale, и TCP Retransmissions.
Можно очень бодро наступить на детские грабли того вида, что вносимая сетевая задержка при разнесении хостов, и даже вносимая задержка по перекладыванию данных в сетевой стек и обратно, вместо обработки их внутри алгоритмов и структур данных монолитного приложения, вносит задержки, делающие приложение неработоспособным, причем с нелинейным падением производительности. Нелинейное падение – это когда тестер нагружает приложение 100 потоками данных, и приложение работает за, условно, не более 0.1 секунды за поток. В боевых условиях набору микросервисов дают обработать 1000 потоков, и оно должно было бы работать за, хотя бы, 0.2 секунды, а оно работает за 2 секунды, и это очень много. Достаточно чтобы с треском весь набор упал. Потому что некоторые запросы, как оказалось, не асинхронные, а очень даже последовательные, и, пока 100 запросов работали в тесте по 0.01 секунды, было ок – потому что тестовая база и тестовый контейнер были в пределах одного сервера, или хотя бы одной стойки, и одного L2 сегмента. Как реальная база и контейнер уехали, хорошо если в пределы хотя бы одного ЦОД и пары соседних стоек. Но что будет, если у вас не просто метро, а очень длинное метро, или даже не метро, а MPLS, и внутри его еще и VPN ? А запросы, напомню, последовательные?
Отдельно надо рассматривать работу шины \ брокера, вносимые ей задержки и вообще применимость.
Иногда ок. Иногда сойдет. Иногда не годится.

В какой-то степени, иногда, это нивелируется тем, что и память стала работать быстрее, и сетевые карты стали умнее (и глючнее), и SSD перешли от SAS к NVME, и SSD перестали так ужасно тормозить, по сравнению с 3D XPoint (Optane). Иногда наоборот, иногда умелые ручки покупают самые дешевые домашние SSD, с их копеечными буферами, отсутствием защиты по питанию, и прошивкой без постоянной сборки мусора. Втыкают это все через Proxmox, в Proxmox через RAID, и получают, рано или поздно, отсутствие Background garbage collection и Write amplification такого приятного состояния, что око ужаса не просто сжимается, а может перекусить лом.

Проблема, как и 15-20 лет назад, не в девопс, линукс, опенсорс итд, а в том , что архитекторы часто стали забывать, что внизу, под фрейворками и контейнерами, все равно находится железо, и у него есть физические пределы. Некоторые вещи из физического мира все равно надо учитывать, хоть в облаке, хоть обвешавших NVME Kioxa Gen 666. И особенно, если у вас практикуется кроилово везде.

Отдельно надо упомянуть культы.
Культ сайдкаров.

Культ недавно запретили, но он возродился с новым именем. Тут же надо вспомнить секту свидетелей безопасного секса с микросегментацией. Не знаю, кто из четверки за это отвечает. То есть, знаю. Эту тетю (и, в то же время, дядю), с мечом от гномов, и своим таким же, кто-то из отцов основателей в Химках видал. В теории то хорошо, красиво, безопасно.
Потом, правда, крики боли – кококо, кокого из-за истио взлетели задержки, и все встало колом.

Культ Грефневой.
Ничего не буду писать.

Культ Шины.
Хорошо разобран на русском на примере Platfrom V Synapse.

Культ Кролика Убийцы, Rabbit of Caerbannog.

Вы знаете что делать – досчитать до трех.
Допреже всего Пресвятую Чеку извлечь долженствует. Опосля же того, сочти до трех, не более и не менее. Три есть цифирь, до коей счесть потребно, и сочтенья твои суть три. До четырех счесть не моги, паче же до двух, опричь токмо коли продолжишь до трех считать. О пяти и речи быть не может. Аще же достигнешь ты цифири три, что есть и пребудет третьею цифирью.
Книга Вооружения, часть четвертая, стих с 16 по 20.
Then did he raise on high the Holy Hand Grenade of Antioch, saying, "Bless this, O Lord, that with it thou mayst blow thine enemies to tiny bits, in thy mercy." And the people did rejoice and did feast upon the lambs and toads and tree-sloths and fruit-bats and orangutans and breakfast cereals ... Now did the Lord say, "First thou pullest the Holy Pin. Then thou must count to three. Three shall be the number of the counting and the number of the counting shall be three. Four shalt thou not count, neither shalt thou count two, excepting that thou then proceedeth to three. Five is right out. Once the number three, being the number of the counting, be reached, then lobbest thou the Holy Hand Grenade in the direction of thine foe, who, being naughty in my sight, shall snuff it."
A reading from the Book of Armaments, Chapter 4, Verses 16 to 20

Культ Запихивания Невпихуемого Statefull Монолита.
Культ настолько отвратителен, что про него ничего не будет в этой истории. Просто знайте, что он есть. Отличительный знак сторонников культа – медведь, собирающий грибы в лису.

Финал, то есть призыв.

Соблюдайте умеренность. Не надо все рубить на куски с криками «контейнеры для микросервисов, ноды к трону кубера».

Показать полностью 8
[моё] Другой мир Контейнер Контейнеровозы Docker Windows IT Длиннопост
15
6
zwuck

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре⁠⁠

7 месяцев назад

Штош, продолжаем эпопею.

В предыдущих частях Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно  и Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до  я поведал вам, мои дорогие читатели и подписчики, о выборе направления разработки и инструментах для решения поставленных задач.

Что у нас теперь есть?

Приложение запускается на моем собственном компьютере и я могу писать сам себе какой я бесподобный. Но в этом ли смысл моего приложения, так ли я его хотел использовать? Хмм…

Хмм...

Хмм...

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

Что для этого необходимо сделать? Правильно, приложение должно быть доступно через интернет, чтобы каждый владелец приложения telegram мог спокойно запустить его в любой точке мира и наслаждаться общением. Есть два варианта решения:

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

  • Арендовать VPS (Virtual Private Server ака виртуальный приватный сервер) у любого хостинг провайдера.

Я выбрал второй вариант. Что такое VPS? Если совсем кратко это просто тупо компьютер, доступный из интернета и обеспечением которого занимается хостинг провайдер. Управление VPS у меня реализовано через консоль и выглядит следующим образом.

Я кулхацкер так та

Я кулхацкер так та

Вы видите все составные части моего приложения:

  • В папке backend находятся все данные и файлы, связанные с «основным» бэкендом;

  • Файл docker-compose.yml отвечает за обеспечение взаимодействия между докер контейнерами, о которых я расскажу далее;

  • В папке frontend находятся все данные и файлы, связанные с фронтендом;

  • В папке nginx находятся все данные и файлы, связанные с инструментом nginx, который реализует веб-сервер и почтовый прокси-сервер;

  • В папке tgbot находятся все данные и файлы, реализующие функционал взаимодействия с ботом в тг.


    Как эти папки с файлами оказались на VPS? Есть три способа, о которых я знаю:

  • Через консоль по SFTP (это транспортный протокол такой) просто тупо копировать все данные;

  • Через инструмент FileZilla, который реализует SFTP, но с удобным графическим интерфейсом;

  • Через git – когда вы заливаете весь ваш код на github или gitlab и уже оттуда скачиваете все на VPS.

Я использую 2 и 3 варианты, так как уже не могу жить без git (это как Ватсон, который без трубки заснуть уже не мог) и некоторые файлы с паролями/секретами, docker-compose, dockerfile копирую через FileZilla.

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

Кхм…примерно так все у меня и происходит

Кхм…примерно так все у меня и происходит

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

  • Установка базы данных в пару строчек в docker-compose.yml;

  • Установка nginx в пару строчек в dockerfile и docker-compose.yml;

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

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

Докер запущен и готов служить

Докер запущен и готов служить

Теперь ваше приложение доступно по ip адресу в браузере, который получил VPS. И тут у вас может возникнуть справедливый вопрос «А где здесь telegram, если приложение запускается в браузере?». Абсолютно верное замечание и ответ достаточно прост - telegram мини-приложение это сайт, который просто открывается в отдельном окне самого telegram и никакой магии. О том, как реализуется эта процедура и о дальнейших настройках доменного имени и ssl, без чего не возможен запуск именно мини-приложения, я расскажу в последующих частях.

А, ну и конечно, как я уже ранее писал, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

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

P.S. я не забыл про твой вопрос мой дорогой nikita17cm и об особенностях «микросерверности», и о разделе бота и основного бэкенда, я обязательно расскажу в следующей части.

Показать полностью 4
[моё] Telegram Веб-разработка Программирование IT Docker VPS Длиннопост
1
1
anetto1502
anetto1502
Лига программистов

Анализируем размер проекта⁠⁠

8 месяцев назад

Среди метрик качества проекта теоретики выделяют число LOC == lines of code, измеряемое обычно в тысячах.

Для измерения размера проекта в строках кода есть интересный проект cloc, запускаемый в том числе в docker (зачем docker?).

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

Пример для одного легаси проекта

Пример для одного легаси проекта

А теперь интересное. LOC является очень противоречивой метрикой для контроля. С одной стороны, чем меньше проект, тем лучше. С другой — сокращение размера кода может вредить его читаемости.

Пост из канала DevFM.

Показать полностью 1
[моё] IT Программирование Docker
26
6
MajorLettuce
MajorLettuce
Лига программистов

Я перенес среду для разработки в облако и значительно упростил себе процесс работы⁠⁠

8 месяцев назад

Последнее время я решил попробовать новый подход к организации среды разработки. Обычно я активно использую Docker 🐳 — он удобен, когда проект состоит из нескольких сервисов, например, базы данных (PostgreSQL, Redis) и других инструментов.

Языки вроде Python предлагают решение "виртуального окружения", но на мой взгляд — это все равно костыли. С другой стороны есть Docker.

Docker позволяет быстро развернуть изолированное окружение, и что самое крутое — сделать это можно где угодно, без лишних настроек. Но есть проблема: на Windows он работает не так стабильно, как хотелось бы. Иногда настолько, что проще снести систему и поставить заново.

Я перенес среду для разработки в облако и значительно упростил себе процесс работы

Поэтому я решил попробовать другое решение:

  • Арендовал облачный сервер

  • Настроил всю среду разработки прямо там

  • Теперь подключаюсь к нему по SSH через VS Code (на самом деле Cursor, но суть та же)

В итоге вся работа идёт на сервере, независимо от мощности моего устройства. Я ожидал лагов и сетевых тормозов, но всё работает удивительно плавно. Теперь мне не важно, с какого устройства заходить — главное, чтобы был интернет и возможность запустить VS Code или Cursor.

Закинул RSA ключ и работаешь как на локальной машине.

Еще одна классная фича конкретно VS Code - подобных редакторов: они могут пробросить порты на локальный хост. Поэтому можно поднять базу данных на сервере на порту 5432, а подключаться к нему через клиент под Windows по адресу 127.0.0.1:5432.

Получается, что даже слабый ноутбук теперь может быть удобным инструментом для разработки. Если Docker на Windows вас тоже достал, возможно, вам зайдет такой подход

Показать полностью 1
Программирование IT Разработка Linux Docker
37
256
sadnomad
IT-юмор

Эй, грузчик, загрузи мне контейнер⁠⁠

8 месяцев назад
Эй, грузчик, загрузи мне контейнер
IT юмор Docker Вакансии Скриншот
29
DELETED

Замена wildcard сертификата .mydomain.ru⁠⁠

9 месяцев назад

Итак мы получили архив с ssl сертами для сервисов. Склеиваем 3 сертификата в в один:

склеиваем 3 сертификата в один fullchain.crt

cat mydomain_ru_2024_05_23.crt >> fullchain.crt

cat intermediate_pem_globalsign_ssl_dv_wildcard_1.crt >> fullchain.crt

cat root_pem_globalsign_ssl_dv_wildcard_1.crt >> fullchain.crt

Далее идем по ssh на наш сервис. Рассмотрим пример с хранилищем javakeystore:

Копируем сюда серты (предварительно меняем key.txt в формат .pem privkey.pem в linux)
/etc/nginx/mydomain_2025/

#Просмотр хранилища keystore
keytool -list -keystore keystore.bin

#Экспортируем в формат pkcs12 наш серт + ключ

openssl pkcs12 -export -in /etc/nginx/mydomain_2025/fullchain.crt -inkey /etc/nginx/mydomain_2025/privkey.pem -out keystore.new.2025.p12 -name tomcat

#Выполняем импорт (пароль тут называется 'password')
keytool -importkeystore -deststorepass password -destkeypass password -destkeystore keystore.new.2025.bin -srckeystore keystore.new.2025.p12 -srcstoretype PKCS12 -srcstorepass password

#Меняем права согласно сервису

chown wikisu:wikisu keystore.new.2025*

#Создаем символическую ссылку на новый javakeystore
ln -s keystore.new.2025.bin keystore.bin

#Удаляем старый keystore
rm keystore.bin

#Если сервис в докер compose (стопаем\стартуем)
docker-compose down

docker-compose up -d
#Мониторим логи

docker logs wiki-web -f

Показать полностью
Java Linux Docker Текст
3
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии