Задача проверки на плагиат в сотни и тысячи раз сложнее создания такого вот сайта. По сути надо будет сканить весь интернет или хотя бы тематические сайты на полный набор текстов с них, и это сложно, дорого, ресурсозатратно, на этом можно свой отдельный бизнес создать...
Проще реально подключить сторонний сервис, это дешевле выйдет. Ну или пусть просто вручную проверяют. Бесплатные сервисы малореальны, так как я уже сказал, что это довольно сложная задача.
nikmil, не надо путать факт авторства и авторское право. Факт авторства является неотъемлемым, его нельзя изменить, но авторское право вполне себе отчуждаемо. В типичном договоре всегда оговаривается, что работник передаёт все права на результат работы работодателю/заказчику и не может ни на что претендовать. Работник не готовый код продаёт, а услуги по его написанию, и не имеет прав на этот код с самого начала, а не потому что ему заплатили. Вопрос оплаты - это не вопрос продажи кода. Это вопрос оплаты услуг.
nikmil, не нужно работать 24/7 (я не верю в то что это правда так было), и заставить так работать никакой договор в любом случае не может (если это договор именно о работе, а не о выполнении каких-то услуг с возможным привлечением третьих лиц итд итп). Надо было с самого начала не страдать никакими переработками, а при их наличии сразу поднимать вопрос об их дополнительной оплате. А потом надо было ссылаться не на какие-то "обстоятельства", а на то, что работа была перевыполена в предыдущие периоды (если, конечно, была - мы-то это проверить не можем). Опять же, об обстоятельствах надо было предупредить заранее и заранее обговорить, каким образом это скажется на договорных отношениях и финансовых обязательствах.
В чём глубокий смысл покупки диска на 2 Тб, если диск ёмкости в 4 раза больше стоит в 1.5 раза больше?
И начать надо с того, под чего конкретно собирается сервер, какие там будут задачи. Весьма возможно, что собирать его нужно из комплектующих с совсем другими характеристиками. Например, систему в любом случае имеет смысл ставить на SSD, а если там будет большая база данных - то ёмкость SSD дополнительно надо подбирать под её ожидаемый размер.
nikmil, если есть свои личные дела важнее чем проект, почему удивление вызывает, что по этому проекту не хотят платить?
Именно с этого важного обстоятельства и надо было начинать разговор. Если исполнитель не выполняет условия договора, то почему он требует соблюдения условий договора у заказчика?
1 миллион это не так уж и много. Часто можно и просто в одну базу положить.
Скорее всего, скорости выполнения самих запросов будет самым узким местом. Что асинхронность, что многопоточность тут вполне подойдут: делаем поиск в нескольких базах или в одной базе параллельно и сливаем результаты после их поступления.
Но может быть лучше сделать заранее денормализацию. Например, если ключом во всех базах является номер телефона, то делаем одну таблицу, где есть номер телефона и все поля из остальных таблиц. Тогда любые данные будут получаться за один запрос.
Selenium запускает полноценный браузер, которому нужна в том числе и оперативная память, поэтому неудивительно, что он тяжёлый...
Но если не хочется Selenium, то может потребоваться очень много усилий, чтобы разобраться в устройстве сайта и достать из него данные. Это вполне реально, но может быть очень сложно, если владельцы сайта хорошо постарались.
Например, у хостера IP 11.12.13.* (внешние), делаем у хостера 11.12.13.2, а ещё три адреса .3,.4,.5 лишь анонсируем в arp во внешний интерфейс. Хостер начинает думать, что IP на нашем хосте, и шлёт трафик на них на наш порт. Но у нас vpn с адресами 10.0.0.1 и 10.0.0.2, мы делаем статические роуты до 11.12.13.{3,4,5} через 10.0.0.2. Сами адреса поднимаем на домашнем серваке хоть на интерфейсе loopback.
Это реально работает, я так делал. Но есть всякие тонкости и нюансы. И чаще всего нет никакого смысла, проще и надёжнее прокинуть конкретный порт через прокси.
praiden, можно анонсировать arp этого IP на серваке хостера (чтобы хостер присылал пакеты этого IP, несмотря на его отсутствие на виртуалке), но IP выдать другому серваку, а у хостера сделать статический роутинг до этого IP через VPN. Ещё потребуется source routing на другом серваке. В общем, очень много телодвижений, которые лучше делать достаточно опытному специалисту, чтобы не сломать всё вообще полностью и не страдать с множеством каких-нибудь странных глюков. В реальности намного проще и надёжнее и быстрее у хостера поднимать прокси и прокидывать всё что надо.
Drno, в реальности же они не используют почти ничего либо используют максимально неэффективным способом. Но из-за того, что у нас в стране военных законодательно ограждают от любого общественного контроля, они позволяют себе чересчур много и чересчур нагло. Причём прикрываются дешёвыми отмазками про "безопасность" и "секретность".
Например, есть случаи, когда воены захватывают территории, которые по кадастру кому-то ещё принадлежат и не могут ими использоваться. Но так как "сикретна", то размежевать это никто не может.
Есть охраняемые объекты культурного наследия, к которым работников культуры просто не допускают и не дают регулировать там все требуемые по закону ограничения, потому что в них сидят задницы каких-нибудь военов или очень высоких чинов, а охраняет ФСО и у Минкульта даже актуальных фоток объектов нет.
При всём при этом реальная безопасность и секретность просто никакущая, потому что если беспорядочно "защищать" всякую фигню в гигантских количествах, то отношение исполнителей к такой "защите" и будет соответствующим, в результате течь будет из всех дыр вообще всё...
CityCat4, до 2015 г. И да, тогда всё было абсолютно так же: директоров щемили по любому чиху, а карманная шобла подрядчиков делала что хотела и через административный ресурс добивалась подписывания любых документов. Но те, кому это было нужно, вполне себе успешно заставляли подрядчиков работать как надо. Просто надо отвыкать от положения терпил и синдрома вынужденной беспомощности.
malsem32, в большинстве случаев вообще не нужно вызывать get_guild. Прями из контекста события (ctx) берётся объект гильдии (ctx.guild) и в нём сразу всё есть (ctx.guild.name, например).
В реальности get_guild должен и сам брать из кэша, судя по коду, он делает примерно то же, что и disnake.utils.get(bot.guilds, id=нужный_id).
malsem32, а часто делается get_guild? Если часто, лучше хранить инфу о гильдии у себя (интересно, кэширует ли её discord.py, как умеет кэшировать мемберов?)
CityCat4, я 10 лет работал в образовании. Если школе это действительно нужно, они вполне могут заставить подрядчика работать как надо. А не просто придти и всё сломать, ради того, чтобы у них в мониторинге бессмысленная галочка нарисовалась.
Проще реально подключить сторонний сервис, это дешевле выйдет. Ну или пусть просто вручную проверяют. Бесплатные сервисы малореальны, так как я уже сказал, что это довольно сложная задача.