Некоторое время назад появился новый формат для графических изображений — WebP. Этот формат обладает рядом преимуществ по сравнению с JPEG: поддерживает как сжатие с потерями, так и сжатие без потерь, а также прозрачность изображений (альфа-канал), и во многих случаях сжимает изображения эффективнее (на моих сайтах — изображения в WebP получаются 30-35% меньше). Но к сожалению, полностью перейти на этот формат пока не так просто. Во-первых, сейчас его полноценно поддерживают только Web-броузеры, работающие на основе WebKit, а Firefox и IE/Edge — нет. Во-вторых, исправить на уже существующем сайте расширения всех файлов с .jpg на .webp может быть весьма трудоемкой задачей. Но недавно я нашел интересное решение, которое предложил Vincent Orback на Github: использовать подмену JPEG на WebP с помощью mod_rewrite. Для этого добавим в .htaccess такие строки: Читать далее…
- Перово, Москва, Россия
- me@4xpro.ru
- x4_pro
- XXXXPro
Новости сайта в Telegram
t.me/4x_proКомпьютерное
Безопасный редирект или как защититься от спамвертайзинга
Таким образом, в современных условиях наличие на сайте скрипта, который позволяет делать редирект без какой-либо проверки, небезопасно. Возникла мысль, как можно его защитить, но при этом не слишком усложнять. Решение нашлось быстро: передаем в скрипт редиректа два параметра, один из которых — это сам URL, второй — хеш, который считается от URL и некоторой строки-ключа. Редирект происходит только тогда, когда рассчитанный на основе URL хеш совпадет с переданным, в остальных случаях выдается ошибка 404. (Естественно, при этом придется поправить все те места на сайте, где генерируется ссылка на скрипт с редиректом, чтобы рассчитать и добавить хеш.) В результате получаем вот такой скрипт: Читать далее…
Несколько советов, как делать резервные копии баз данных
На первый взгляд, сделать резервную копию базы данных какого-либо сайта предельно просто, если есть доступ к утилите mysqldump и планировщику заданий cron. Добавляем в планировщик запись вида:
3 14 * * * /usr/bin/mysqldump -u root -pпароль имя_базы > путь/backup.sql
и все, каждый день в 3 часа 14 минут будет сниматься дамп. Время для резервного копирования следует выбирать так, чтобы в этот момент нагрузка на сервер была минимальной за сутки.
Но такое решение недостаточно надежно. Если база повредится, скажем, в 3:12, то дамп будет перезаписан пустым файлом.
Для защиты от этого имеет смысл сохранять перед снятием новой копии сохранять старую, а также делать отдельные копии через определенные промежутки времени. Например, я сохраяю еженедельную и ежемесячную, а чтобы меньше нагружать SQL-сервер, просто копирую файлы дампа: Читать далее…
Как отформатировать сумму и дату на JavaScript
Недавно потребовалось вывести в Интернет-магазине сумму заказа с десятичными разделителями, причем сделать это с помощью JavaScript. Стал искать, есть ли встроенные средства для этого и обнаружил объект NumberFormat. В простейшем случае форматирование выполняется так: var str = new Intl.NumberFormat().format(value), где value — это число, которое нужно отформатировать. По умолчанию используются свойства системной локали, но можно и указать ее явно: new Intl.NumberFormat('ru-RU'), и хеш с опциями в качестве второго параметра. Напримр, new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB', currencyDisplay: 'symbol'}) явно указывает, что нужно использовать форматирование, применяемое для денежных сумм, использовать валюту рубль и выводить не "руб.", а ₽. О других опциях можно узнать в справочнике.
Поскольку некоторые старые броузеры с этим объектом работать не умеют, рекомендую выполнять проверку с помощью такой функции:
function formatPrice(value) {
if (Intl.NumberFormat) return new Intl.NumberFormat('ru-RU',{ style: 'currency', currency: 'RUB', currencyDisplay: 'symbol'}).format(value);
else return value; // если броузер не поддерживает этот объект, оставляем все как есть, без обработки
}
Для форматирования даты используйте объект Intl.DateTimeFormat c аналогичным методом format.
Виртуальный шпионаж или Как узнать о человеке все
Любой человек, ведущий более-менее активную жизнь в Сети так или иначе оставляет в ней свои следы. И вооружившись терпением и умением правильно пользоваться поисковыми системами, можно собрать о нем немало любопытной информации. Основной подход здесь такой: нужно тщательно проверять каждую новую зацепку, которую удается найти. Скажем, выполняя поиск по Email, находим профиль на форуме, и делаем поиск по логину и всем контактам профиля. Также следует помнить, что Интернет в целом является ненадежным хранилищем информации, поэтому рекомендуется на каждого человека заводить файл, в который сохранять всю найденную информацию в виде скриншота, ссылки и предполагаемой оценки достоверности. Вот несколько рекомендаций для различных исходных данных. Читать далее…
Adminer — легкая альтернатива phpMyAdmin
Редактор баз данных для Linux
Google Maps: перемещение карты и маркеров
В одном из предыдущих сообщений я писал про то, как вывести карту с помощью Google Maps API и поставить на ней маркер. Тема, как выяснилось, весьма востребованная, и я решил начать по ней серию публикаций, где буду рассказывать о том, как сделать различые действия с Google Maps. Итак, сегодня речь пойдет о перемещении самой карты и маркеров на ней при наступлении каких-либо внешних событий.
Читать далее…Упрощаем разделение тем в PunBB
Наконец, мне это надоело, и я решил немного подредактировать исходный код moderate.php (который лежит в корне). Читать далее…