Category: it

фига

Webp формат. На заметку. Вебмастерам и админам хостинга.

Гугль стал продвигать "более современные форматы изображений".

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

Я не сторонник усложнять конфиги веб серверов. Однако поконвертировав всё подряд в .webp, я увидел порой ДЕСЯТИкратную экономию размера без видимого изменения качества картинки. И потому соблазнён.

Порывшись по просторам Интернета и исследовав, какие броусеры поддерживают, а какие нет, формат .webp (mime image/webp), я на большинстве контролируемых мной сайтов сделал так:

настройки Media Webp плагина для WordPress
1. Каждому файлу с расширением .png .jpg .jpeg создал файл .webp скриптом (с параметрами качества cwebp -q 85 -exact).
1.1. Сайтам на WordPress добавил плагин Media Webp от Steven Turner с настройками на картинке справа чтобы заливаемые файлы на сайт сразу получали .webp добавки.
2. Для сайтов под Apache добавил в корневой .htaccess строки:
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP:Accept} image/webp
RewriteCond %{REQUEST_FILENAME}\.webp -s
RewriteRule ^(.*)\.([pP][nN][gG]|[jJ][pP][eE]?[gG]) $1\.$2\.webp [QSA]

# Prevent double webp and give the correct mime-type
RewriteRule \.[pP][nN][gG]\.webp$ - [T=image/webp]
RewriteRule \.[jJ][pP][gG]\.webp$ - [T=image/webp]
RewriteRule \.[jJ][pP][eE][gG]\.webp$ - [T=image/webp]

</IfModule>


3. Для сайтов на Nginx в корневой конфиг nginx добавил проверку на то, поддерживает ли браусер формат webp:
map $http_accept $webpsupport {
   default 0;
   "~*image/webp,*/*" "1";
   }

А в virtual host'ы nginx - location такого вида, чтобы при наличии .webp файла И поддержке его браусером отдавался .webp файл, а при невыполнении любого из этих двух условий - оригинальный файл:

    location ~* \.([jJ][pP][eE]?[gG]|[pP][nN][gG])$ {
      expires max;
      add_header Pragma public;
      add_header Cache-Control "max-age=31536000, public";
      set $dorewrite 0;
      if (-f $request_filename.webp) {
         set $dorewrite $webpsupport ;
      }
      if ($dorewrite) {
         rewrite ^(.*)\.([jJ][pP][eE]?[gG]|[pP][nN][gG]) $1.$2.webp last;
      }
    }


Сделано и написано по следам и с творческой переработкой этой статьи и того, что написано в описании плагина Media Webp от Steven Turner (в частности, в той статье не предусмотрено отсутствие одного из файлов, а большие и маленькие буквы в расширении оригинальных файлов тоже могут быть разными, хехе).

Критика приветствуется.

Также тут

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Обновил тут Битрикс на некоем сайте. И PHP - с 5.6 на 7.3

под php5.6.38 более битрикс не обновляется.
И не работает часть ОСНОВНОГО кода битрикса, если обновить сам битрикс из-под 7 версии и переключиться на 5-ю.

под php7.3 не работает 4 модуля, но работает основное ядро битрикса.

Все 4 модуля или уже отстутствуют в "магазине решений", или формально присутствуют, но объективно не обновляются и не поддерживаются техподддержкой. То есть им на замену надо искать платные решения.

Добавления в конфиги (Для сайта в кодировке CP1251):

= db_conn.php =============================
setlocale(LC_ALL, 'ru_RU.CP1251');
setlocale(LC_NUMERIC, 'en_US.UTF-8');
setlocale(LC_MONETARY, 'en_US.UTF-8');
define("BX_USE_MYSQLI", true);
===========================================

добавить буковку i после Mysql:
= .settings.php ===========================
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
===========================================

В тестировании при проверке структуры базы будет ругань на одну таблицу и кнопочка "исправить" её на автомате.

Хехе...

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Фишинговый спам якобы от регистраторов доменов

скриншот письма в почте Постоянное место этого текста - там

Оплата продления

Что это такое?

Якобы от регистратора домена вам приходит письмо с предупреждением о блокировке домена за его неоплату. Это письмо может выглядеть даже в точности так же, как уведомление от настоящего регистратора. Интересно, что такие письма приходят как незадолго до срока окончания делегирования домена, так и ПОСЛЕ.

Почему это опасно?

  1. Вы можете по невнимательности нажать на кнопку и попадёте на фишинговый сайт, где вам предложат пополнить баланс и оплатить продление домена, а на самом деле деньги уйдут левым людям, а домен продлён не будет!
  2. Мошенники рассылают этот тип спама по всем раскопанным в интернете емейл адресам, относящимся к одному домену. Кроме того, большинство настоящих напоминаний о продлении приходит не одному человеку. В результате "один человек продлил домен по настоящему", а "другой отдал деньги мошенникам, но не понял этого, так как сайт то работает..." В настоящее время у нас на хостинге есть сайт, домен которого таким образом в 2018 году "продлили" ШЕСТЬ человек, получателей рассылки по нему. И мы даже точно не знаем, кто из шестерых продлил по настоящему, а кто отдал деньги за просто так.
  3. При включённом отображении HTML писем в веб интерфейсе почты и в аутлуке часть картинок в сообщении загружается с сайта злоумышленников, тем самым поставляя им существенную информацию о вашем броусере и о факте прочтения письма в броусере. Эта информация имеет ненулевую ценность на рынке спама ("данный адресат не удаляет письма сразу, читает их в html виде...), и в дальнейшем у вас есть перспектива получить фишинговые письма, более точно оттаргетированные на вас. В результате в будущем вы можете, сами того не заметив, потерять этот домен или попасться на иные "разводки".
  4. Если вы попались более одного раза - скорее всего, на вас опробуют и более серьёзные разводки типа требования подтвердить владение доменом .org/.com/.net, для чего надо сгенерить код его передачи.

Как уменьшить вероятность ошибки

  1. Платёжные системы разнообразны, а за год, прошедший со времени предыдущей оплаты вашего домена, и регистратор мог сменить формочку логина, схему оплаты с paymaster на platron какой-нибудь, и ваша карта могла отэкспайриться, а вы - сменить любимый банк... Поэтому когда вы уже запустили процедуру оплаты - вы не всегда сможете достоверно понять, что платите "куда надо". На что мошенники и рассчитывают.
  2. Тем не менее (рекомендация от Кира Злобина, которую мне напомнил Шаплов) Не пользуйтесь никакими формами логина кроме тех которые вы лично добавили в закладки. Для каждого используемого сайта надо добавить в закладки ссылку на форму логина. И всякий раз когда у вас вдруг внезапно или даже планово спрашивают логин-пароль, не пользоваться предложенной формой, а идти в закладки и пользоваться проверенной.
  3. Пользоваться почтовыми программами, которые по умолчанию показывают письмо в виде plain text, а при отображении HTML версии письма показывают полный список ссылок и внешних изображений
  4. Вместо перехода по ссылке из письма использовать для перемещения денежных средств проверенные, стабильные пути. Конкретный совет тут дать сложно, конечно.

Заразить сайт своими руками

Якобы от регистратора домена или от "вышестоящей организации" приходит требование подтвердить владение доменом путём помещения в корень сайта файла с расширением .PHP.

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

Несмотря на кажущуюся очевидность этой подлянки, вебмастеров низкой квалификации оказывается достаточно немало.

Код передачи домена

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

Фишинговые письма этого типа обычно написаны от имени "вышестоящего международного регистратора" и требуют "подтверждения владения доменом", для чего подробно описывают процедуру именно генерации кода для передачи домена другому регистратору или администратору домена.

Сотрудник, недостаточно хорошо знающий язык интерфейса, может, однако, выполнить присланные инструкции, как обезьяна...

В чём опасность

При выполнении этого типа инструкций вы полностью лишаетесь контроля над доменом, хотя формальным владельцем можете даже оставаться. Возвращение так потерянного домена требует как минимум обращения в судебные инстанции той страны, в которой находится регистратор домена, ПОЛУЧИВШИЙ контроль над захваченным доменом.

Как уменьшить вероятность ошибки

Повышение квалификации сотрудников, запрет на "исполнение действий по механической схеме без понимания".

Также На Golos.io

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Что-то меня разобрало сделать яваскриптовую галерейку...

На самом деле я делал её давно и с "серверной частью".

Например - тут оно вполне работает.

Но тут решил на основе уже написанного по большей части кода сделать "минималистическое" нечто.

Постановка задачи

  1. Есть статический html, в котором внутри a href на большую картинку лежит img src маленькой
  2. Хочется чтобы большая картинка по клику открылась "в размер окна браусера"
  3. Хочется чтобы посетитель мог листать ВСЕ картинки на данной странице любым из способов:
    1. стрелки вправо-влево, ESC - выйти из листания
    2. колёсико мыши
    3. при наличии тачскрина - свайп влево-впаво или вверх-вниз, тап - выход
    4. клики мышкой по правому-левому краям картинки, крестик - выход
  4. Единственный файл и максимально простая инструкция установки на сайт
  5. Отсутствие привязки к каким либо другим скриптам, в частности jQuery

Результат

Тут яваскриптовая галерейка и немного других фишек на JS

Очень прошу всех, у кого есть немного времени и готовые html странички с фотками и картинками - потестировать и оставить отзыв.

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Memcached 1.5.2_1 возможно подвержен атаке переполнения...

Есть подозрение, что свежайший (ну по крайней мере для FreeBSD и CentOS) memcached имеет memory-leak/buffer overflow баг, приводящий при некоем значении поступившего ему на вход url с буквами нац алфавитов (сорри, не нашёл точно в логах какой строкой это случилось) к выжиранию 2^32 байт памяти одной порцией (то есть вот так прямо +4 гигабайта в top ему прибавляется сей же секунд), причём ПРЕОДОЛЕВАЯ стоящее при запуске ему ограничение (там у меня было 1 гиг выделено). Всё это в достаточно типовом построении "nginx берёт из мемкешеда то, что туда положил php код вордпресса, битрикса или какой другой CMS"

От операционки вроде не зависит - в CentOs и FreeBSD эффект наблюдался примерно одинаково.

Это у меня два разных сервера стали недавно систематически падать и-или подвисать. Исследование показало, что, добавив им по 40 гигабайт свопа на тормознутом бекапном винте, я смог пронаблюдать "плавный" процесс "отжирания 4гиг мемкешедом" до того, как система впала в ошибку "не могу выделить свап спейс, пошли прибьём тут кого-нибудь..."

Особенная красота ситуации на одном из серверов заключалась в том, что кеширование объектов в WordPress "вдруг" переставало работать для подавляющего большинства страниц сайта, что приводило к возрастанию числа SQL запросов к базе с 10 до 740 и с 28 до 3000 и ещё более, в результате всё подыхало прямо на глазах. Пример честно закешированной как html файл такой страницы - вот тут. видно 747 запросов к MySQL 8-)

Сил раскопать самому этот кусок кода вот прям щас нету. :(

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Кто знаток libreoffice? Настройки автозамены нужно поменять...

В libreoffice автозамена работает только после нажатия пробела.
У конкретного узера было в MS Office что он набирает (( и получает [ сразу, без пробела.
В LibreOffice - облом. Только с обязательным пробелом.

Поясняю - в английском тексте [] набираются легко и так.
В русском тексте где приходится ставить квадратные скобки - человек настроил в MS Office себе их набором двух круглых. После открывающей скобки пробел НЕ НУЖЕН.

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Овноблядство... Клиент-сервер - внимательно пишите код...

Среди шедевров апдейта кода некоей CMS - сравнение при определении допустимой длины ВВЕДЁННОГО в форму имени пользователя изменилось с if ... <= 16 на if < 16.

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

Ибо ДО апдейта в CMS не было Jquery вообще нигде. Формочки как формочки. Отправили - обработали.
А после апдейта - панимашь ли, во всех полях всех форм надо же предложить пользователю подсказку.
Выпадающий список типа а то вдруг забыл...

И вот в коде на сервере написано validate(поле, maxlen) и <= в коде функции.
А в яваскрипте, исполняющемся в броусере и проверяющем формочку перед отправкой, СТАЛО validate(поле, maxlen) - только в этой validate стоит < maxlen

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

Фишинг в Gmail с "расшаркой документа" - будьте внимательны!

(моё по этому информоповоду, хехе)

Меня периодически спрашивают, почему я, опытный IT-шник и админ хостинговых серверов:
1. не выкидываю на помойку аккаунты в разных бесплатных почтовых сервисах в пользу какого-то одного, в своём домене ли, или наиболее удобного, или как-то ещё отличающегося в лучшую сторону.
2. не пользуюсь каким-то одним почтовым сервисом чтобы собирать в него почту со всех прочих тех или иным способом (раз уж у меня много ящиков).
3. пользуюсь (обычно для разных ящиков, хехе) КАК (нормальной|никому на хер не нужной) почтовой программой (TheBat), ТАК и (замечательным|ублюдочным) вебинтерфейсом.
4. применяю как нормально защищённые лучшими специалистами от спама ящики типа Gmail, так и требующее заметных затрат времени, сил и знаний "самостройные" сервера.
5. имею не один ящик на некоторых сервисах.

В том числе потому, что вот сегодня, "One Account to rule them all" на Gmail подвергся фишинговой атаке на невнимательных людей, от которой никто из пользующихся этим конкретным сервисом на 100% не защищён.

Коротко (может и не совсем точно - подробнее читайте по ссылке) суть сегодняшнего:

Некие люди написали в рамках Google Apps приложение, назвали его Google Docs с такой же иконкой, как настоящие, и сделали так, что вы получаете письмо с предложением посмотреть расшаренный документ, лежащий на гугль драйв. Перейдя по ссылке из письма, вы попадаете на предложение якобы настоящего гуглевого сервиса предоставить полный доступ ко ВСЕЙ вашей почте ентим конкретным пидарасам.

Если вы согласились - то с вашей почты немедленно начинают рассылаться такие же фишинговые письма по всем вашим контактам.

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

И немного о Битриксе, memcached, ...

По результатам попыток ускорить работу некоторых CMS (wordpress и bitrix) в формате "я тут админ, я могу поставить разный софт и произвольно настроить конфиги всего!" написан такой вот текст, по которому я с удовольствием приму не только соболезнования, но и какие-то конкретные рекомендации.

Подчеркну исходную постановку задачи: Не собирая Нового Крутого Сервера С Быстрыми SSD, добиться приемлемой (время отклика сервера менее 1 секунды, например) скорости работы сайта на этом ...ном битриксе, максимально эффективно используя имеющиеся ресурсы.

И лучше - под nginx+php-fpm, нежели под апачем. :)

По мнению самого Битрикса ("Панель производительности") "бутылочным горлышком" является быстродействие файловой системы (600 операций в секунду против ТРЕБУЕМЫХ битриксом 10000). Прочие параметры сервера практически устраивают ("База данных MySQL (чтение) 5 847 7 800 количество запросов на чтение в секунду" я считаю нормальным).

На текущий момент задачу лично для себя я практически решил и делюсь опытом.

UPD (про проблемы с конкретно SSL в php56 и не только):
На одном из двух серверов, где у меня наблюдались глюки с SSL, я таки проапдейтил систему до FreeBSD 11.0-RELEASE, причём действия:
1. апдейт 10.0-RELEASE до 11-RELEASE занудно руками со всеми базовыми библиотеками
2. постановка 11-RELEASE с нуля и pkg install бинарного пакета ca_root_nss
Привели, в конечном итоге, к одному - правильному результату, причём сейчас это версия OpenSSL 1.0.2j-freebsd 26 Sep 2016.

То есть openssl s_client -connect домен:443, curl и php стали давать адекватный результат, без труднопредсказуемых глюков.

Без апгрейда всей системы - смена версии не давала результата.

Оригинал этого поста в Dream Width. Если вы там есть - отвечайте там, уже комментариев: comment count unavailable

фига

https в Windows XP, 2003 server - теперь только в Мозилле. И скоро кончится тоже.

UPD6: Opera 12.17-12.18 тоже имеет проблемы. Коммент на эту тему ЖЖ не позволяет расскринить - вот ссылка на скриншот: http://c2n.qkowlew.org/qhome-q-2017-06-17_095913.png
UPD5: Mozilla тоже скоро всё: Прекращена поддержка платформ Windows XP и Vista. Последним LTS-выпуском для данных систем станет Firefox 52, который будет поддерживаться до апреля 2018 года; (интересно, Витус дал взятку? Дать что ли взятку Mozilla Foundation, чтобы и они его поддерживать перестали...)

Как известно, ныне под Винду есть три существенно различных броусера:
Internet Explorer, Mozilla Firefox и Google Chrome.

Однако в части "безопасных" протоколов https всё ещё хуже - у Мозиллы есть своя реализация SSL/TLS, а Гугль тупо пользуется системной, той же что IE.

В настоящее время для Windows XP и 2003 настал момент, когда ни один браусер, кроме Мозиллы, не может установить https соединение с сайтами, на которых используется TLS 1.1 и более поздние. Так как в этих операционках реализации TLS позже 1.0 просто нет (и более не будет апдейтов). "сертификат имеет недействительную подпись, иди нахрен отседова". Так как Гугль продавливает логику "ssl everywhere", а рынок с наслаждением потирает свои наглые ручки в ожидании бабла от врадельцев сайтов...

Иными словами, машинки с Windows XP и Windows 2003 server ЕЩЁ НЕ ПЕРЕСТАЛИ (пока файрфокс жив и развивается), но скоро могут перестать быть используемы для просмотра на них существенной доли современного интернета. А особенно - нафиг всякий онлайн банкинг, оплата и магазины.

И Файрфокс на них - в ближайшее время становится безальтернативен. :(
UPD1: Ну можно ещё какое-то время жить на Opera 12.17. Но уже есть проблемы. См. выше UPD6
UPD2: Клоны Хрома не предлагать, они ВСЕ наследуют логику "пользуемся системным". Vivaldi туда же.
UPD3: Клоны Файрфокса (PaleMoon был интересен на момент выхода, например) не интересны, ибо ОТСТАЮТ от основного потока.
UPD4: Старый Сафари (Safari 5.*) под виндой - тоже системное хранилище криптографии использует.