Задать вопрос
  • Как увеличить производительность проекта на python?

    petermzg
    @petermzg
    Самый лучший программист
    1. Оптимизация SQL запросов.
    2. Кеширование часто используемых данных.
    3. Кеширование ответов на GET запросы.
    Ответ написан
  • Как увеличить производительность проекта на python?

    все упирается в бд, на ум сразу пришло вынести эту часть в микросервис
    Какой ещё микросервис? Микросервис, который делает что?

    В-нулевых, нужно конкретизировать что значит "упирается в БД". Тормозят какие-то конкретные запросы? СУБД не хватает ресурсов? Слишком медленный диск? Или, может, под "упирается в БД" вы понимаете всю бизнес-логику приложения, которую вы называете "берет из бд нужные данные" (и тогда становится понятно про микросервис)?
    Во-первых, нужно вынести СУБД на отдельную машину, желательно на голое железо (если речь про реальный хайлоад, а не про кривой код и конфиги).
    В-третьих, под это железо нужно СУБД корректно сконфигурировать.
    В-четвёртых, нужно добавить кэширование.
    В-пятых, нужно проверить алгоритмы и пофиксить узкие места (на последнем месте, потому что это самое трудоёмкое).

    Я понимаю, что python и django не самые быстрые инструменты (мягко скажем)
    Я вас уверяю, что проблема в вашей компетенции (мягко скажем), а не в инструментах. Есть достаточно проектов, написанных на Джанго, которые вывозят большие нагрузки.
    Вы, в принципе, правильно сделали, что попытались поначалу закидать проблему железом - оно обычно дешевле, чем время разработчиков. Но параллельно надо и оптимизацией заниматься, и это требует системности, которой в вопросе не очень-то видно. Ну и компетенций разных - если тормозят алгоритмы - это одно, если конкретные SQL-запросы - это другое, если СУБД задыхается в принципе - это третье.
    Ответ написан
    5 комментариев
  • Как увеличить производительность проекта на python?

    @Everything_is_bad
    Запустил профилировщик, увидел, что все упирается в бд, на ум сразу пришло вынести эту часть в микросервис,
    Начал правильно, но вывод сделал левый, по уму надо начать с тюнинга postgresql, оптимизировать SQL запросов (может у тебя там индексов не хватает или еще хуже, проблема N + 1), кешировании данных.
    Ответ написан
    Комментировать
  • При выгрузке CSV файла из 1С на хостинг, в файл добавляется невидимый символ, откуда?

    Lynn
    @Lynn
    nginx, js, css
    На 146% уверен что это BOM.
    Надо пересохранить файл из какого-нибудь текстового редактора или научить 1С не добавлять BOM.
    Ответ написан
    4 комментария
  • Как использовать Tracemalloc для оптимизации использования памяти?

    Смотреть потребление памяти сразу после запуска неправильно. Надо смотреть как минимум после того, как бот обработает 5-10 запросов (причем если в боте есть разные команды, то надо чтобы он обработал все из них).
    Советую недельку понаблюдать за памятью, только смотреть (условно) раз в день и записывать значения. Если потребление памяти в какой-то момент перестанет расти, то это значит, что никакой утечки нет и это нормальное потребление памяти для вашего бота. Если это потребление для вас слишком большое, то тогда нужно смотреть, что конкретно эту память потребляет и как это потребление уменьшить.
    Если же потребление растет постоянно в течение длительного времени, то есть утечка и надо ее исправлять. В питоне утечка памяти скорее всего будет из-за того, что бот сохраняет что-то в глобальные переменные в процессе работы. Если такого нет, то утечка в какой-нибудь библиотеке. В любом случае, это без кода не понять.
    Ответ написан
    2 комментария
  • Есть ли смысл перенести Mysql на другой сервер для ускорения сайта?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Нет, смысла нет. Для ускорения работы сайта надо сначала провести исследования проблемы. Для начала однозначно определиться что, где и как именно у вас "медленно открывается". Далее необходимо собрать данные о происходящих процессах - что, где, как и когда работает, а так же какую создает нагрузку на оборудование - процессор, память, сеть, диски и прочее. По результатам данного исследования надо будет найти бутылочное горлышко или несколько и исследовать их более детально и глубоко, чтобы понять как их устранить - программно, аппаратно, организационно и прочее. И вот только после этого уже решать что именно и как именно надо сделать для решения проблемы.
    Ответ написан
    Комментировать
  • Есть ли смысл перенести Mysql на другой сервер для ускорения сайта?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    В основном, видимо, нагружают они.
    Профилирование?
    Ответ написан
    2 комментария
  • Как найти endpoint у H2O GPT?

    @rPman
    вот же дока с примерами https://github.com/h2oai/h2ogpt/blob/main/docs/REA...
    Ответ написан
    Комментировать
  • Как можно реализовать покраску изображения?

    @MATPOC_HA_TAHKE
    Без конкретного примера задания невозможно ничего сказать.
    Одно дело иконки-кнопочки навигации перекрашивать или территорию страны на карте. Тем более если уходить в векторную графику. Совсем другое дело фотография какого-нибудь натурального объекта, вот фото кухни (не рендерное, а "живое") - перекрасьте на ней стены, чтоб с холодильником гармонировали. Тут понадобится верстальщик-дизайнер-фотошопер, ручная работа, нейросети пока от такого далеки.

    Покажите пример. Инструментов существует множество, но универсальных нет.
    Ответ написан
    Комментировать
  • Какие есть годные альтернативы OpenServer?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Непонятно для чего оно вообще может быть нужно.
    Для продакшена - очевидно нет.
    Для профессиональной разработки - докер контейнер с рабочим окружением.
    Для того чтобы делать примеры из видеокурсов, достаточно запустить php -S localhost:80
    Ответ написан
  • Как лучше организовать хранение данных?

    Делаю для себя на 1 компьютер.

    Тогда сразу выкидываем postgres.

    Варианты, которые рассматриваю на данный момент:
    - json
    - sqlite

    Я бы остановился на sqlite только из-за удобства организации данных, по сравнению с голыми json-ами.
    Возможно есть другие варианты, где сразу реализована возможность сохранения форматированного текста.

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

    Но вообще подводных камней при генерации отчётов очень много - лучше разбейте свою задачу на несколько, чтобы оценить свои силы (отдельно хранение и получение данных и отдельно - формирование хотябы одного печатаемого отчёта на их основе)
    Ответ написан
    2 комментария
  • Как скачать целую ветку форума 4pda и скормить нейросети?

    @rPman
    4pda основан на ip.board, все загружается без танцев с бубном, только осторожно, без авторизации получаются другие страницы чуть в ином формате. Вот пример кода на основе simple_html_dom:
    <?php
    include('simple_html_dom.php');
    
    // ссылка на первую страницу темы
    define('START_URL','https://4pda.to/forum/index.php?showtopic=1084129');
    // количество страниц &st= из ссылки » в навигаторе по страницам
    define('PAGES_CNT',580);
    
    @mkdir('data');
    
    for($i=0;$i<=PAGES_CNT;$i+=20)
    {
    	// формируем url
    	$url=START_URL.($i==0?'':'&st='.$i);
    	// имя кеш файла чтобы не загружать повторно
    	$cache_fn='data/'.md5(START_URL).'.'.$i.'.html';
    	if(!file_exists($cache_fn))
    	{
    		// Загружаем страницу
    		$data=file_get_contents($url);
    		// сохраняем страницу в кеше
    		file_put_contents($cache_fn,$data);
    		// пауза между запросами к серверу для защиты его от ddos
    		sleep(1);
    	} else
    	{
    		// читаем из кеша
    		$data=file_get_contents($cache_fn);
    	}
    
    	$html=str_get_html($data);
    	$num=0;
    	foreach($html->find('div[class]:not([class=""]') as $post)
    	{ // перебираем посты в теме
    		// пропускаем первый пост темы, он дублируется на каждой странице
    		if($num++==0) continue;
    		// выводим пост на экран
    		$post_html=$post->find('div.post_body',0)->text();
    		echo $post_html.PHP_EOL;
    	}
    	// вставляем разделитель между постами
    	echo '<hr/>'.PHP_EOL;
    	$html->clear();
    }
    ?>

    вернет на экран посты указанные в START_URL, мне лень было вычислять конец треда автоматически, бери количество постов вручную из навигатора постов.

    Страницы можешь вручную указать for($i=0;$i<=PAGES_CNT;$i+=20) вместо 0 - начальный (с шагом 20) и PAGES_CNT конечный пост.

    Вместо текстового представления $post_html=$post->find('div.post_body',0)->text(); можешь сложнее структуру сообщения анализировать, выявляя цитирования и к примеру исключая их из текста (они занимают большую часть всего, дублируя многократно информацию).

    Конкретно этот пример не влезет в контекстное окно бесплатного claude - это 70к токенов. Поэтому дели на куски.
    Ответ написан
    8 комментариев
  • Подсчёт в бд по возрастанию?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    2 < 10
    '2' > '10'
    Непправильный тип поля place.
    Ответ написан
    3 комментария
  • Как выбрать ии?

    @rPman
    так как вопрос задан в общем то и ответ будет общим

    фаза 0 - выбираешь, что именно будет отдано на откуп ии а что на opencv
    фаза 1 - собираешь обучающие данные
    фаза 3 - создаешь нейронную сеть (выбор алгоритма/архитектуры, выбор гиперпараметров типа количества слоев)
    фаза 4 - обучение (подготовка данных в нужном формате, деление выборки на обучающую и тестовую, обучение, периодическое сравнение метрик качества на основной и обучающей для выявления переобучения)
    фаза 5 - создание алгоритма для проверки эффективности результата

    все это заворачиваешь в цикл от фазы 0 до 5 до тех пор пока метрики эффективности для тебя не станут достаточными.

    p.s. советую для начала остаться на opencv и понять, где именно у тебя тормоза, займись для начала профилированием, какой именно алгоритм у тебя занимает большее время, и попробуй его заменить на что то по проще.

    очень часто, вместо сравнения изображений, может хватить сравнение их частей или каких то быстро вычисляемых характеристик... возможно тебе достаточно будет сравнить несколько точек?
    Ответ написан
    Комментировать
  • Почему Nginx отдаёт разный размер ответа для одной и той же картинки?

    @golubevvladislav Автор вопроса
    Вроде разобрался. Походу многие клиенты просто по таймауту отваливались. А всё из-за того, что картинку одномоментно загружают 12 тыс клиентов, из-за чего не хватает просто физически канала 100Мб/с. Меньше пропускная возможность - меньше можно одномоментно отдать данных. Увеличили канал до 500Мб/с - 98% клиентов теперь получают картинку в полном объёме.
    Ответ написан
    4 комментария
  • Забыл пароль от Kali Linux есть возможность восстановить?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    восстановить никак, только изменить на другой,
    и это если есть физический доступ к компутатору и есть Root права
    Ответ написан
    1 комментарий
  • Как можно быстро менять файлы на виртуальном сервере?

    tamaz1987
    @tamaz1987
    Умный, красивый
    Как вариант использовать базу данных. Это даже ускорит работу системы.
    Ответ написан
    Комментировать
  • Простое решение для десктопа?

    @kalapanga
    Delphi так и просится по всем пунктам. Бесплатной Community Edition хватит вполне.
    Ответ написан
  • Хочу написать python Бота который играет в сапер за меня, и наверное мне нужно наставление более опытного?

    Vindicar
    @Vindicar
    RTFM!
    1. Ввод данных
    Окей, гугл, как сделать скриншот в питоне

    2. Предобработка данных
    Используя что-то типа opencv matchTemplate(), превращаешь скриншот в двухмерный массив, описывающий игровое поле.

    3. Принятие решения
    Имея двухмерный массив, описывающий поле, определи, где надо ставить мину. Если решение принять не удаётся - определи, какую клетку надо открывать.

    4. Реализация решения
    Зная номер клетки, выполнить щелчок по ней. См. pyautogui.
    Ответ написан
    Комментировать
  • Redis спустя время теряет данные, с чем это связано и как исправить?

    @gidwin Автор вопроса
    В общем, почитав англоязычные форумы, то что я называл "странным" явлением, считается скомпрометированным сервером. Редис сервер был ничем не защищен и подвергся атаке(буквально в течении полу часа после раската). Единственное решение этого вопроса является защита, а именно необходимо установить юзера/пароль и сменить порты. Все это помогло мне в моей проблеме. Мораль сей басни такова, необходимо делать сразу защищенный доступ и будет вам счастье!
    Ответ написан
    2 комментария