Web-мастеринг

Подписаться на эту рубрику по RSS

"Арабские" цифры или Почему арабы пишут буквы справа налево, а цифры - наоборот.

Август, 30th 2017

арабский язык

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

На днях меня попросили сделать арабскую версию одного сайта, материалы все предоставлял заказчик. Надо сказать, что с арабским то этого, я столкнулся лишь один раз, когда восстанавливал Asus All-in-one PC c флешки и получил Windows 8.1 на арабском.

Впечатления, надо сказать, непередаваемые - здесь дело даже не только в том, что весь интерфейс шиворот-навыворот, а сколько вскрывается тонкостей при разработке, о которых и не подозреваешь изначально. От того вдвойне интересней, плюс новый опыт. К делу я привык подходить основательно, но видя арабский текст, чувствуешь себя немного обезьяной, а потому следует хоть немного изучить предмет и понять суть. Постепенно вникая в тему, узнал об одной интересной особенности арабского языка, о которой ранее даже не подозревал. Далее текст не мой, позаимствовал его с https://rusdrus.livejournal.com/2585.html. Полагаю, будет весьма интересно почитать для общего развития.

читать полностью →

Скрипт для обновления превью товаров miniShop2

Август, 09th 2017

Нашел рабочий скрипт для обновления всех превьюшек у товаров в miniShop2 для ModX. Честно говоря не понятно, почему данный функционал не встроен в miniShop2 сразу, потому как функция крайне нужная. Или предполагается какой-то специальный человек для ручной перегенерации изображений? В общем, надеюсь это когда-нибудь доделают.

Для выполнения скрипта потребуется установить дополнительный пакет Console, в нём уже и запускать сам скрипт.

<?php
$step = 5;
$offset = isset($_SESSION['galgenoffset']) && $_SESSION['galgenoffset'] ? $_SESSION['galgenoffset'] : 0;
$miniShop2 = $modx->getService('minishop2');
$modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
$q = $modx->newQuery('msProductFile', array('parent' => 0));
$total = $modx->getCount('msProductFile', $q);
$q->sortby('product_id', 'ASC');
$q->sortby('rank', 'DESC');
$q->limit($step,$offset);
$resources = $modx->getCollection('msProductFile', $q);
foreach ($resources as $resource) {
    $modx->runProcessor('mgr/gallery/generate', array('id' => $resource->id),
        array('processors_path' => $modx->getOption('core_path').'components/minishop2/processors/'));
}
$_SESSION['galgenoffset'] = $offset + $step;
if ($_SESSION['galgenoffset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['galgenoffset']);
} else {
  $sucsess = round($_SESSION['galgenoffset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['galgenoffset'] ?
           $_SESSION['galgenoffset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";

Обновление MODX Evolution до последней версии

Январь, 29th 2017

обновление MODX Evolution до последней версии

Несмотря ни на что, MODX Evolution по прежнему жива (хотя сейчас, в большей степени, все проекты веду на ветке Revolution). Система хороша как для небольших сайтов и сайтов-визиток, так и вполне себе серьезных проектов, плюс обладает очень шустрой и в последних версиях весьма красивой панелью управления. Единственное, не рекомендовал бы на её основе делать интернет-магазин. Сегодня расскажу, как обновить систему MODX Evolution до последней версии (на данный момент 1.2.1).

читать полностью →

301 редирект. Шпаргалка по mod_rewrite

Декабрь, 17th 2016

Любой вебмастер не раз сталкивался с необходимостью сделать 301 редирект (при изменение адреса страницы, склейке доменов, удалении дублей). Один из самых простых способов задания 301 редиректа - использовать механизм mod_rewrite, позволяющий переобразовывать URL «на лету».

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

читать полностью →

Как изменить кодировку базы MySQL из Win-1251 в UTF-8?

Ноябрь, 12th 2016

Попросили тут перенести сайт на другой хостинг, а он, как оказалось, до сих пор жил в кодировке cp1251. Вроде ничего страшного - работает, но уж больно по колхозному это в наше время и давно пора перейти на UTF-8.

Перед любыми действиями с базой данных ОБЯЗАТЕЛЬНО СОЗДАЕМ РЕЗЕРВНУЮ КОПИЮ!

Самый быстрый и простой способ - пересохранить копию базу данных в любом текстовом редакторе (sublime text, notepad++) в нужной кодировке и импортировать на место старой. Можно проделать данную операцию используя SQL-запросы в phpMyAdmin.

ALTER DATABASE имя_вашей_базы_данных charset=utf8;

Данный запрос конвертирует базу в указанную кодировку. Кроме этого потребуется конвертировать и сами таблицы. Запрос для конвертации таблицы базы данных:

ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

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

SELECT CONCAT(  'ALTER TABLE `', t.`TABLE_SCHEMA` ,  '`.`', t.`TABLE_NAME` ,  '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) AS sqlcode
FROM  `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` =  'My_DB_for_convert'
ORDER BY 1
LIMIT 0 , 90

Остается только скопировать результаты и вставить их в форму нового SQL запроса.

Потерянные заказы в Opencart (ocStore). Вылавливаем баги системы.

Сентябрь, 02nd 2016

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

Суть в следующем, на одном интернет-магазине на движке ocStore (Opencart) обнаружился такой баг - все заказы попадали в "потерянные". В админке они находились если перейти в Продажи > Заказы и установить фильтр Статус - "Потерянные заказы".

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

читать полностью →

Google Chrome и Firefox прощаются с Flash и переходят на HTML 5

Август, 11th 2016

Google Chrome и Firefox отказываются от Flash

Свершилось! Вчера Google официально заявила о скором прекращении поддержки Flash в своем браузере Google Chrome. Еще в середине мая компания предупредила рекламодателей, что пришло время отказываться от «морально устаревшей» технологии и переходить на HTML5.

Сегодня более 90% интернет-страниц испытывают чрезмерные нагрузки и нуждаются в аналитике. Именно Flash замедляет процесс мониторинга и уже с сентября этого года, версия браузера Chrome 53 начнет блокировать подобный контент.
HTML5 намного легче, намного быстрее, и позволяет максимально эффективно рендерить веб-страницы. Сразу после запуска вы увидите насколько лучше стали работать привычные сайты. В декабре же, после релиза Chrome 55, мы планируем тотальное отключение Flash и полный переход на HTML5 на сайтах, которые его поддерживают.

Примерно в это же время к принудительной блокировке флеша приступит и браузер Mozilla Firefox. Напомню что в эппловских продуктах Flash не поддерживается по умолчанию, хотя и есть возможность установки его на OS X. Впрочем, лично я только рад что эта жрущая батарею технология уходит в прошлое.

[Решено] 1С Bitrix. Разрешаем скачивать файлы из веб-формы неавторизированному пользователю

Май, 24th 2016

bitrix. права пользователей

1С Bitrix богата весьма странными решениями при реализации простых вещей. Простой пример - на сайте есть веб-форма с полем типа "файл" (когда нужно отправить какое-то изображения или иной документ). В результате на почту приходит письмо со ссылкой на этой файл примерно такого вида:

...
Ваш макет в цвете:
*******************************
image.jpeg [1414 x 700] (400.34 КБ)
http://you_site.ru/bitrix/tools/form_show_file.php?rid=104&hash=3d97e1e3f496e167c9fa6274e3b9772d&action=download&lang=ru
...

При клике по ссылке выдается сообщение: "Ошибка! Файл не найден."

Почему так? Просто в данный момент вы не авторизовались на сайте, или у вас не достаточно прав.

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

читать полностью →

Установка шаблонов OpenCart с templatemonster.com

Апрель, 05th 2016

Введение Что находится в шаблоне и для чего его можно использовать

В данное время занимаюсь доработкой одного интернет магазина на движке OpenCart. Хотя... слово "доработка" тут уже не уместно использовать, так как данный интернет-магазин уже почти полностью переписан, однако речь сегодня пойдет о более простом пути.

Наверняка многие слышали о таком ресурсе как templatemonster.com. Там имеется куча готовых шаблонов под разные движки, в том числе и под OpenCart. При разработке собственного шаблона я и взял за основу один из демонстрационных шаблонов с этого ресурса, а в блог решил закинуть их инструкцию по установке этих самых шаблонов. Так что не сочтите за плагиат, честно указал откуда она взята, чтобы вам не искать.

Итак, данная документация состоит из нескольких частей и охватывает весь процесс установки и настройки веб-сайта OpenCart c нуля. Руководство достаточно понятное и удобное в использовании.

читать полностью →

Доклад "Эволюция фронтенда в 2016" на Moscow Tech Meetup

Март, 09th 2016

Довольно интересный доклад с Moscow Tech Meetup о том куда движется web-разработка в 2016 году и в частности фронтенд. Какие новые инструменты уже появились и еще появятся у разработчиков и на что стоит ориентироваться в будущем. На мой взгляд, весьма познавательно.

К примеру, Microsoft показал себя с неожиданной стороны, сделав (!)бесплатный кроссплатформенный инструмент для web-разработки Visual Studio Code.