Массовое сжатие PNG- и JPEG-картинок на сервере без существенной потери качества

На VPS с SSD обычно дефицитом является дисковое пространство. Сайты разрастаются, в какой-то момент чистка логов уже не позволяет по-быстрому освободить ценное место на диске. Перенести часть сайтов на другой сервер — не всегда возможно. В общем, когда других решений нет, то можно пожать картинки. Изменять их разрешение массово, конечно, нельзя, потому что так можно испортить вёрстку или как-то ещё поломать сайт…. Читать далее »

Как добавить администратора сайта только через php на WordPress

Создайте каталог в каталоге wp-content/ вашего сайта mu-plugins/ Создайте новый файл в каталоге, который вы создали, и назовите его как хотите. Нечто подобное будет работать хорошо. wp – content wp-content/mu-plugins/create-admin-user.php Скопируйте этот фрагмент кода и вставьте его в файл, который вы только что создали: Вариант №1 add_action( ‘init’, function () { $username = ‘admin’; $password = ‘password’; $email_address = ‘webmaster@mydomain.com’; if ( ! username_exists(… Читать далее »

Отлов 500-х ошибок

define(‘E_FATAL’, E_ERROR | E_USER_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR); define(‘ENV’, ‘dev’); //Custom error handling vars define(‘DISPLAY_ERRORS’, TRUE); define(‘ERROR_REPORTING’, E_ALL | E_STRICT); define(‘LOG_ERRORS’, TRUE); register_shutdown_function(‘shut’); set_error_handler(‘handler’); //Function to catch no user error handler function errors… function shut(){ $error = error_get_last(); if($error && ($error[‘type’] & E_FATAL)){ handler($error[‘type’], $error[‘message’], $error[‘file’], $error[‘line’]); } } function handler( $errno, $errstr, $errfile, $errline )… Читать далее »

Как остановить спам который льется из Contact Form 7 в WordPress

Спам – огромная проблема с контактными формами на веб-сайтах WordPress – как веб-сайтах, которые мы разрабатываем, так и в глобальном масштабе. Contact Form 7 – это самый популярный бесплатный плагин для контактной формы WordPress. Отправка спама через контактную форму может быть огромной проблемой для веб-сайтов WordPress с высоким трафиком, получающих сотни спамовых писем каждый день. Это неудобно и затрудняет обнаружение подлинных сообщений… Читать далее »

Как сделать — фиксированный/липкий заголовок

Как создать фиксированный заголовок при прокрутке Для удобства работы с сайтом часто разработчики используют фиксированную шапку сайта. Как сделать липки заголовок? достаточно просто, рассмотрим на примере: Шаг 1) добавить HTML: Пример <div class=»header» id=»myHeader»> <h2>My Header</h2> </div> Шаг 2) добавить CSS: Пример /* Style the header */ .header { padding: 10px 16px; background: #555; color: #f1f1f1; }/* Page content */ .content { padding: 16px; } /* The sticky… Читать далее »

Удаление и импорт данных в базу psql

Для создания дампа БД PostgreSQL следует использовать в консоли SSH команду следующего вида: pg_dump -h hostname -U username -F format -f dumpfile dbname где: hostname — имя сервера БД; username — имя пользователя БД (совпадает с именем базы данных); format — формат дампа (может быть одной из трех букв: ‘с’ (custom — архив .tar.gz), ‘t’ (tar — tar-файл), ‘p’ (plain — текстовый файл)…. Читать далее »

Сериализация QuerySets. Получить запрос в sql виде

Используя pickle для QuerySet, будет выполнен запрос к базе данных что бы загрузить данные в память для сериализации. Сериализация обычно используется перед кэшированием QuerySet или загрузкой из кеша, необходимо что бы результат был доступен для использования сразу после загрузки (чтение с базы данных занимает некоторое время, что свело бы всю пользу кэширования к нулю). Это означает что после восстановления сериализованного QuerySet, он будет содержать результат на… Читать далее »

Кэширование Django. Оптимизация производительности Django проектов (часть 3)

В этой части серии мы рассмотрим важнейший подход к обеспечению высокой производительности — кэширование. Суть кэширования в том, чтобы размещать часто используемые данные в быстром хранилище для ускорения доступа к ним. Важно понять, что быстрое хранилище (например, оперативная память) часто имеет очень ограниченный объем и его нужно использовать для хранения только тех данных, которые с большой вероятностью будут запрошены. Кэш… Читать далее »

Работа с базой данных. Оптимизация производительности Django проектов (часть 2)

Это продолжение серии статей про оптимизацию Django приложений. Первая часть доступна здесь и рассказывает о профилировании и настройках Django. В этой части мы рассмотрим оптимизацию работы с базой данных (модели Django). В этой части часто будет использоваться логирование SQL запросов и DDT, про которые написано в первом посте. Работа с базой данных во всех примерах будет использоваться PostgreSQL, но для пользователей других… Читать далее »

Получить все поля модели с его значениями Django

Для получения значений из модели Django и дальнейшего их использования и манипуляций с ними можно воспользоваться подобным простеньким скриптом. Я использовал его для создания формы фильтрации по всем полям и приводил типы к виду для html разметки: type_filter ={ ‘CharField’: ‘text’, ‘TextField’: ‘textarea’, ‘IntegerField’: ‘IntegerField’, ‘DateField’: ‘DateField’, ‘AutoField’: », ‘ForeignKey’: » } your_fields = Your_model._meta.local_fields filter = dict() for f… Читать далее »