Category: it

Category was added automatically. Read all entries about "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. В личном кабинете МТС есть такая усуга "периодическая детализация", и ежемесячно я получаю на свой емейл простыню с подробно расписанными звонками, СМС и трафиком и ИХ СТОИМОСТЬЮ. в виде одного .html файла, который я сохраняю у себя на компе, очень удобно.

3. Несмотря на то, что МГТС - это тот же МТС, суммарной детализации "с точным указанием сколько стоило" не выдают И ЗАКАЗАТЬ ЕЖЕМЕСЯЧНУЮ ДЕТАЛИЗАЦИЮ НЕВОЗМОЖНО - нет такой услуги.

Получение детализации в том самом МГТС, которе "тот же самый МТС" - делается только вручную и выглядит примерно так:

0. Идёшь в "Заказ документов"
1. ВЫБИРАЕШЬ конкретный тип соединений из 4-х.

2. Кнопаешь кнопки "далее" (так как выбора тебе не дают - просто далее несколько раз)
3. Ждёшь когда документ появится по ссылке "Заказанные документы"
4. Скачиваешь себе на комп .pdf файл
5. Смотришь расклад по минутам без цен:


- повторяешь пункты 1-5 для остальных 4-х пунктов типа соединений.

То есть если с тебя вдруг сняли бабло сверх стандартного расклада - замучаешься искать "за что". :)

Подчеркну смешное - "за текущий период" детализация выдаётся сразу вся, но тоже без стоимости. :)
Но когда ты получил счёт с ох...ными числами - именно тот период, за который ты этот счёт получил, стал "предыдущим периодом", и чтобы получить его детализацию - таки да, 4 раза по пять пунктов.

Вот так - и фирма одна, и формально всё вроде соблюдено, и номер обещают сохранить (хехе), но ответ на вопрос "почему это вы вдруг не хотите перейти в нам?!?!?" для меня очевиден. НЕ НАДО мне на мобильную связь МГТС переходить.

Оригинал этого поста в 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

фига

"Просто скопируйте их сюда..." Linux + Wine + PhotoShop...

Озадачившись запуском Adobe PhotoShop под Linux, я обнаружил, что в общем-то всё работает, кроме ввода текста в Text Tool, причём в PS 7.0 выдаётся довольно информативное сообщение, что запрос не может быть выполнен, так как не найден системный шрифт.

Обнаружил, что в C:\WINDOWS\FONTS\ пусто.
Обнаружил, что инсталляция через wintricks даже ВСЕХ шрифтов НЕ приводит:
- ни к появлению C:\WNDOWS\FONTS\ существенной доли того, что обычно есть в XP/W7
- ни к появлению информации в реестре о некоторых шрифтах XP/W7
- к работоспособности Text Tool в Фотошопе.

а приводит скорее уж к захламлению списка шрифтов, хехе.

Заподозрив, что "что бы ни было прописано в реестре про шрифты - Фотошоп что-то пытается искать в папке FONTS), я, не мудрствуя лукаво, тупо скопировал из работающей (с данной версией Фотошопа) XP (x86, RU, Professional, SP3, установленная примерно по дефолту), все файлы папки C:\WNDOWS\FONTS\ в папку C:\WINDOWS\FONTS\ этой копии wine. И перезагрузил Linux.

Заработало.

Нет, не на всех версиях проверял.
Нет, не все нюансы перепроверил.

Точно заработало: Linux Mint MATE x64 + (wine 1.6 или wine 2.0.3) + Adobe PhotoShop 7.0
Linux Mint MATE x64 + wine 1.6.2 + Adobe PhotoShop CS6 (не все шрифты набираются, но это и в винде так)

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

фига

Ещё о переходе на Линукс - NTFS check needed

Ни для кого не секрет, что, сменив операционку (с Винды на Линукс), большинство пользователей не могут себе позволить переформатировать сразу все носители в более нативные файловые системы. Мнение "ну поддержка NTFS наконец то уже давно прекрасна!" среди линуксоидов уже в наличии.

Однако практика показала, что:
1. В процессе интенсивной работы с NTFS дисками (копирование туда и обратно файлов 0.2-70 гигабайт размером) пользователь обнаруживает(в данном случае это была silent_gluk, спасибо ей за терпение), что скорость ЧТЕНИЯ с NTFS диска в Линуксе вдруг становится непотребной (500-900 килобайт в секунду против обычных 17-49 мегабайт в секунду для этого конкретного диска). ntfsfix -d не помогает.

2. ntfs check по конкретным Линуксом чаще отсутствует вообще (и при mount слегка поуродованной этим линуксом партиции выдаётся сообщение, где предлагается перезагрузиться в винду и чекать там).

3. Часть аппаратуры (таков, например, аппарат с эмуляцией CD/DVD Zalman VE-300) не желает понимать NTFS, на который Линукс что-то записал (Zalman выдаёт сообщение Bad/Unsupported Hdd), и никому достоверно неизвестно "что там не так" с его точки зрения. Поэтому аргумент "да ну, этот линукс работает же с даннной партицией, нефиг париться!" не катит совершенно.

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

Потому итогом моих секспериментов стал следующий алгоритм "починки поломатого":

Положим, у нас было mount /dev/sdd1 /mnt/DISK и работа с этим диском окривеладо некоторого состояния. Далее делаем так:

===============================================================================
umount /mnt/DISK
vboxmanage internalcommands createrawvmdk -filename /path/to/sdd_writethrough.vmdk -rawdisk /dev/sdd
vboxmanage modifyhd /path/to/sdd_writethrough.vmdk writethrough
chmod a+w,a+r /path/to/sdd_writethrough.vmdk
chmod a+w,a+r /dev/sdd

в VirtualBox берём машину с работоспособной Windows 7, останавливаем её.
Добавляем к ней носитель - диск с этим файлом /path/to/sdd_writethrough.vmdk.
Убеждаемся в том, что он "Сквозной"!!!
Если он не сквозной - идём в менеджер вирт носителей VirtualBox и там меняем его тип на Сквозной. И присоединяем заново.

Запускаем виртуальную машину, дожидаемся, когда она обнаружит это устройство, убеждаемся в том, что это тот том, что нам нужен (в том числе по содержимому, хехе).

(!) неочевидное из практики ещё чекания NTFS на Windows NT 4.0:
! метку тома стираем, затем создаём заново.

Чекаем том средствами Windows 7.

Shutdown виртуальной машины.
Убираем диск из неё.

mount /dev/sdd1 /mnt/DISK
==============================================================
Поправки принимаются.
Если есть более простой путь - укажите.
Подчеркну условие - "не ребутить линукс". :)

(если диски только MBR - для такого чекания годится и XP в виртуалке)

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

фига

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

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

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

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

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

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