Хотя я посмотрел ещё раз на код... Зачем вообще использовать html2text? Правильнее перебрать элементы info, ведь html2text делает человекочитаемый, а не машиннообрабатываемый текст.
А если говорить про dns поддомены? Есть технические?
У нас сервера сами в Internet не выставлены (кроме балансеров - и то там есть нюансы), к ним доступ делается пробросами портов на маршрутизаторах (Cisco). Адреса серверов внутренние, DNS тоже внутренний со своей зоной, кроме того, есть всякие служебные зоны разного уровня типа dte, dev.flex.k8s итд итп.
Разработчики у нас в основные платформы вообще не ходят, только в тестовые и препрод-стенды. Ну ещё в молодые проекты они таки да, имеют доступ иногда. Логи смотрит эксплуатация, если надо - передаёт логи разработчикам. Если разработчикам нужны ещё какие-то данные (логи, записи из боевой базы, параметры серверов итд) - они их просят у эксплуатации.
Разработчик не запускает "иногда скрипт из консоли". И по имени hello.site.com он никуда не пойдёт. Админ - если он не в курсе или не помнит наизусть - пойдёт посмотрит в вики, что такое hello.site.com (и вообще как этот проект устроен), узнает что это балансер из 6 нод, посмотрит конфиг этого балансера в git, поймёт что оно пробрасывается в пару, XXXsrv05:8085 и XXXsrv11:9216, далее будет смотреть логи уже на этих серверах. Дежурный админ посреди ночи у нас регулярно решает такие квесты.
Такой бред, как пихать на сервера hello.site.com приложения проекта foobar.co.il у нас не делают в принципе. Выраженным исключением является запуск cassandra на куче серверов, потому что она давно перестала справляться с нагрузкой на 12 серверах того проекта, где используется (да-да, из-за GC), а переезд на scylla пока был неудачен из-за critical bug в scylla (очень хотелось, ведь по нагрузочным тестам scylla способна обойтись раз в 5 меньшим числом нод). У нас тут шутят, что на любом свежеустановленном сервере самозарождается ccassandra.
kopatych3756, делим текст на слова. По каждому слову пробегаемся и считаем число букв:
входящие в А...Яа...я - русские
входящие в A...Za...z - латинские
% русских букв = число русских букв / число всех букв
% латинских букв = число латинских букв / число всех букв
Получаем по каждому слову % русских и латинских букв. Каких больше - такое и слово (ну, отдельно решить, как реагировать на крайние случаи, например, когда 50%/50%, или когда в "слове" есть символы, не относящиеся ни к русским, ник латинским).
Дархан Увалиханов, заводим текстовое поле и пихаем. Потом достаём и делаем exec от извлечённой строки. Но лучше так не делать. Лучше пойти от задачи: зачем вообще понадобилось код в базу класть?
Ruslan Website, это ты подумай головой и пойми, что "красивый сайт" - вещь очень субъективная. Все эти авававарды - просто вручную составленные каталоги. А теперь подумай: кому и зачем будет интересно смотреть десятки говносайтов бюро переводов, чтобы кто-то бесплатно и без смс смог посмотреть один из них?
Вадим Ушаков, специализация тут ни при чём. Просто на таких объёмах сделать тяп-ляп точно не получится.
Это всё вопросы к чему? Есть реальный бот с такими нагрузками? Или это просто интерес к технологиям highload? По этим технологиям в интернетах тучи разных статей.
Алексей Арх, мы вводили в действие две новые площалки и поставили на одну из них первые XXXsrv00 и XXXsrv01, а на другую - XXXsrv02 и XXXsrv03. Потом имевшиеся старые сервера на Solaris постепенно превратили в XXXsrv03...XXXsrv13, за одним замечанием: XXXsrv07 был старым слабым сервером и был выведен из эксплуатации сразу же по завершении миграции. Потом когда ещё какой-то старый сервер переквалифицировали в сервер этой платформы, он стал XXXsrv17, а не XXXsrv07. Недавно вывели из эксплуатации XXXsrv04 и XXXsrv05, заменили на XXXsrv22. Нас дырки в нумерации не поугают. Наоборот, наша специфика как раз в том, что лучше новому серверу (не аналогичному на замену - такое тоже бывало при разных миграциях, или вот у одного сервера были аппаратные проблемы и его заменили из зипа) дать новый номер, нам это удобнее.
Всё равно же если серверов [буква]XXXX-YYYYsrv[номер] больше одного
Такое длинное имя есть только в hostname сервера. Его в DNS нет и никто им никогда не пользуется. Двух таких не бывает. Тут тоже, кстати, элемент специфики: железками и первичной установкой серверов у нас занимается практически только один человек, и он не путается в начальной подготовке, а мы уже не путаемся в том, что получилось.
а если их больше 50, то точно не запомнишь и нужно таблицу открывать
У нас их больше 50, но на одну платформу приходится от 2 до ~20. Мы не путаемся. Я же говорю - у каждого своя специфика.
Да, если задача определять только для русского и английского языка, то всё гораздо проще: алфавиты языков не пересекаются, и можно просто считать число русских и английских букв в словах и относить к тому языку, буквы которого использваны в слове, например, минимум на 60%.
Вадим Ушаков, например, сделать приём событий через webhook на балансер, который по хешу id гильдии будет кидать на один из N инстансов бота. Но если у тебя реально есть проект уровня миллионов активных клиентов, то тебе лучше нанять хорошего специалиста, а не пытаться костылять непойми чё на коленке.
Александр Фалалеев, наколенные решения подойдут, когда всегда доступен хорошо понимающих их админ, а количество обращений невелико. Если там обращаются тысячи человек в сутки, которых надо распределять по тематикам и уровням компетенций десятков операторов, то это, увы, не подходит.
Не существует универсального решения, каждый выбирает под свои собственные реалии. При малом числе серверов и несложном распределении их ролей не очень-то важно, как они называются. Всё это в любом случае можно просто держать в голове и легко выучить парой прочтений странички в локальной вики. Если же серверов много, то какие-то принципы их именования всё же приходится придумывать с учётом своей специфики.
Например, у моего работодателя все сервера имели красивые трёхбуквенные названия (bux, dix, kex итд), а виртуалки на них (точнее зоны Solaris) уже именовались z[назначение][номер]. По мере роста концепция поменялась, теперь сервера именуются [буква]XXXX, где XXXX - инвентарный номер, а буква отражает общее назначение (например, b - балансер, v - сервер с виртуалками, k - нода kubernetes). Предлагали ещё добавлять в конце букву с обозначением датацентра, но это не прижилось, тем более сервера могут переезжать с места на место, а физическое размещение в основном нужно знать только выделенному админу по железякам и начальнику отдела, для этого в вики есть красивая таблица по каждой стойке с точным описанием что в каком порядке идёт. У многих серверов есть алиасы по их назначению вида YYYYsrv[номер] либо на основной адрес сервера, либо на адрес в отдельном vlan соответствующего проекта. Реальный hostname сервера содержит оба имени: [буква]XXXX-YYYYsrv[номер] - поэтому заходом на сервер или опросом их через ansible всегда можно понять, где что. Иногда физический сервер меняется (и, соответственно, инвентарник), а его чаще всего используемое админами имя по на значению сохраняется. В завершение отмечу, что некоторые сервера по историческим причинам именовать по-новому не стали. Например, почти все базы данных имеют привычные старые имена, но их немного и они обслуживаются выделенными DBA.
Но подобная практика подойдёт далеко не всем. Например, если есть много проектов с малым числом серверов на каждом, или если сервера вперемешку используются на разных проектах (например, выбираются из соображений необходимого объёма памяти или наличия CUDA для работы нужного приложения), или сервера виртуальные и создаются в облаках по мере необходимости, то задачи перед именованием серверов могут стоять совсем другие.