октябрь
31
, 2016
При переносе сайта Modx Revo на другой хостинг иногда возникает проблема с пустой админкой. Сайт открывается и прекрасно работает, а админка не хочет. Открываете /manager, вводите логин и пароль, а после ничего. Белая страница, ответ 200 от сервера и никакой информации, что происходит.
Или еще интереснее, админка открывается, но или не переключаются вкладки, или не создается документ, или еще какая-то гадость.
При этом Вы уверены, что все пути-настройки-доступы к базе и .htaccess задали правильно, но админка все равно не работает. Бесит эта штука сильно, а меж тем исправить проблему очень просто.
Читать дальше
октябрь
16
, 2016
Когда разрабатываешь веб-приложение не один, а в команде и/или на нескольких машинах, рано или поздно сталкиваешься с проблемой синхронизации кода проекта и базы данных. Для управления кодом есть системы контроля версий, в частности, git, а для СУБД придуманы миграции.
Есть много готовых разнообразных инструментов, которые занимаются миграциями, но!
Очень часто все, что мы хотим - это просто залить в базу изменения, которые сделаны другим разработчиком или же самим собой на другой машине. И желательно при этом затратив минимальные усилия, в том числе и на изучение и настройку незнакомой системы. К тому же далеко не всегда мы располагаем полным доступом к серверу для установки оных инструментов.
Поэтому всех, кому интересно узнать, как самим сделать простую утилиту миграций, написав полсотни строк php-кода, прошу в статью.
Читать дальше
октябрь
14
, 2016
Про _.throttle и _.debounce написано немало. Но не хочу кидать ссылки на описание этих функций в официальной документации - их Вы и без меня найдете. Повинуясь старой привычке, я наглядно покажу, какие проблемы помогают разрешить означенные функции.
Это одни из тех приемов, что я очень советую знать и использовать во фронтенд-разработке. Можете даже сразу посмотреть демо. Только не забудьте открыть консоль, чтобы понять, в чем дело. А всех желающих разобраться с этой темой подробнее прошу под кат.
Читать дальше
октябрь
11
, 2016
Всегда был сторонником работы с git в командной строке. Думаю, это помогает лучше понимать этот инструмент, а также позволяет не зависеть от GUI IDE. В статье я приведу набор команд, которыми приходится пользоваться при работе с git и кратко поясню их назначение.
Список дополняется...
Читать дальше
октябрь
9
, 2016
Сегодня я хочу рассказать, как отправить файлы на сервер из html-формы. Обычно эта процедура не вызывает никаких затруднений: кодировка multipart/form-data у формы, input type="file" и все. Остается принять файлы на сервере и скопировать их в нужное место.
Но мы сделаем интереснее, отправим файлы с помощью ajax, без перезагрузки страницы. А также посмотрим, как валидировать файлы на клиенте и сервере, а именно проверять максимальный размер загружаемых файлов и допустимые расширения.
Читать дальше
октябрь
5
, 2016
В этой небольшой заметке я расскажу о том, как склеивать (или сквошить) коммиты в git. Также совсем немного затрону тему работы в vim.
Читать дальше
сентябрь
30
, 2016
В предыдущих частях статьи про сборку фронтенда мы поговорили про основы сборки и написали простое тестовое приложение на backbone + require.js.
Теперь самое интересное - собственно сборка gulp. По ходу статьи мы напишем десяток gulp-задач для различных нужд сборки и подробно разберем, зачем те или иные задачи нужны вообще.
Внимание, это не статья по основам основ gulp! Предполагаю, что Вы знаете, что такое nodejs и npm. Если не знаете, то лучше предварительно погуглите, что это такое и как это все поставить. Установка nodejs, npm и gulp займет у Вас 5-10 минут. А теперь к самой статье.
Читать дальше
сентябрь
27
, 2016
В предыдущей статье мы договорились разобраться, как собирать фронтенд с помощью gulp. Но предварительно нужно сделать тестовое приложение для того, чтобы было что собирать. В качестве примера сделаем простенькую страничку на Backbone. Управлять модулями будем с помощью require.js. Работать с dom поможет добрая jQuery, а с данными - lodash. Подгружать html-шаблоны мы сможем с помощью requirejs-text.
Так как приложение тестовое, я не буду уделять внимание функциональности - все предельно просто. Обычная страничка с парой текстов и картинкой. Мы создадим одну модель, представление view к ней, загрузим html-шаблон и отрендерим все это добро. Предполагаю, что Вы уже знакомы с Backbone и Require.js, поэтому подробно каждую строчку расписывать не буду. Код очень простой, но все-таки без знания основ этих библиотек не все будет очевидно.
Если Вы не знакомы с Backbone, но интересуетесь созданием Single Page Application в целом и этой замечательной библиотекой в частности, оставляйте комментарии в статье, что-нибудь придумаем :-)
А теперь к делу.
Читать дальше
сентябрь
24
, 2016
Уже давно инструменты сборки фронтенда перешли из разряда экзотики в необходимую часть работы над проектом. Я хочу поделиться некоторыми наработками по части организации проекта, его структуры, рассказать, какие задачи я решаю с помощью сборки и какими инструментами. Мы напишем небольшое тестовое приложение в связке Backbone + Require.js. Настроим окружение для работы над проектом в режиме "девелопмента" и "продакшена", посмотрим на их отличия. И в конце напишем задачи для сборки проекта с помощью инструмента сборки gulp и его плагинов.
Будут рассмотрены такие вопросы: работа со стилями sass с использованием sourcemaps, склеивание и сжатие js-файлов, сборка requirejs с помощью rjs, препроцессинг html, очистка и копирование файлов, оптимизация изображений, поднятие локального веб-сервера и режим наблюдения - watch-таски.
Добро пожаловать в статью, будет много интересного!
P.S. Материала много, поэтому статья будет разбита на 3 части: основы сборки и организация проекта, написание тестового приложения на Backbone + Require.js и собственно сборка с помощью gulp.
Читать дальше
сентябрь
13
, 2016
Свершилось! Заключительный урок серии "Фильтры в интернет-магазине". В статье доработаем некоторые детали, чтобы придать каталогу завершенный вид. Мы узнаем, как обновлять список брендов и цены при смене категории, а также некоторые другие вещи. Начинаем.
Читать дальше