Блог хеллоуворлдщика

Резервное копирование

Резервное копирование

Пару дней назад я выкатил новую версию расширения для резервного копирования, который:

  • умеет лить на FTP используя LFTP
  • работать на OS X и Linux
  • так же хранит архивы N-дней и позже удаляет самые старые из них
  • архивирует используя TAR
  • работает с MySQL и PostgreSQL

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

Если вам дороги ваши данные - используйте резервное копирование. =)

Ссылка на расширение и инструкцию по установке: https://github.com/bupy7/sh-backup

Читать далее

Расширение для работы с URL на Javascript

Как всегда все уперлось к тому, что ничего не нашлось, а очень хотелось. Но, зато нашел куски интересного кода на Gist, которые доработал и выкатил в расширение.

Данное расширение работает с URL, а точнее преобразует строку запроса (query) в объект, и обратно. Плюсом, имеется конкатенация частей URL.

Библиотека очень простая и состоит из одного файла. Больше информации на оф.странице расширения.

Ссылка на расширение: https://github.com/bupy7/js-lib-url

Читать далее

История изменений ActiveRecord модели в Yii2

Данное расширение необходимо всем, кто работает с важным контентом, и хочет иметь историю о всех изменениях по записи. В проектах с частой и очень важной манипуляцией с данными данная возможность очень и очень важна. Иногда не ясно, кто изменил, зачем и когда. Но, не беда, все будет! =)

Расширение имеет единственное хранилище - в базу данных. В файл, увы, реализация мне не нужна, но если кто-то хочется - тот очень легко сможет такое реализовать указав в модуле соответствующий класс хранилища наследовавшись от bupy7\activerecord\history\storages\Base.

Latest Stable Version Total Downloads Latest Unstable Version License

Ссылка на репозиторий: https://github.com/bupy7/yii2-activerecord-history

Читать далее

Обертка Date Range Picker (Bootstrap) плагина для Yii2

Обертка Date Range Picker (Bootstrap) плагина для Yii2

Пошатавшись по GitHub, и поняв, что выбор очень скудный, понял одну вещь: проблема утопающего - дело рук самого утопающего. Поэтому, я взялся за написания обертки над сие прекрасным плагином.

Ссылка на расширение: https://github.com/bupy7/yii2-date-range-picker

Читать далее

Поведение для смены и установки пароля пользователя для Yii2

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

Смена пароля довольно интересная вещь, особенно, если это выполняется не в одном месте. Часто вижу в проектах, что в моделях начинают плодить какой-то ужас. Это неправильно, товарищи. Вообще, не правильно даже наличие какого-то кода в модели в методах before<EventName>/ after<EventName>. Правильно стряпать behavior'ы и вешать куда нужно и когда нужно. Но, хрен с ним...

В общем, расширение простое, как сибирский валенок. Читаем README и применяем. Тащемта, удобно жи. =)

Ссылка на расширение: https://github.com/bupy7/yii2-password-behavior

Читать далее

RBAC или роли доступа в Yii2

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

Первое, что мне не нравится в RBAC реализованный в Yii2, это возможность использовать несколько ролей. На самом деле, при правильно реализованной иерархической структуре достаточно одной роли.

Второе, что мне не нравится, это хранение назначений отдельно, т.е. связывание роли с пользователем. И это в коробке вообще никак не отключается. Если нужно действительно это отключить, чтобы случайно другой программист не заюзал - нужно переопределять менаджер авторизации и вешать всякие throw и прочее. Роль, имхо, должна указываться в таблице с пользователем, потому что: если нужно делать дамп, то если назначения хранятся в ФС - придется делать дамп и связей; а если назначения хранятся в БД (а хранить их в БД нет никакого смысла вообще), то такое тяжело поддерживать, если вдруг структура ролей будет изменена; и потом, если хранить назначения с ролями отдельно, то у людей получается жуткий говнокод, если нужно иметь возможность "видеть" роль пользователя и менять её динамически. Поэтому, делать нужно правильно изначально: все роли, правила, иерархию наследования храним в ФС, а связываем все это дело, через поле role в таблице с пользователями.

Читать далее

Хранение и работа с конфигурацией приложения используя базу данных в Yii2

Я был очень удивлен, когда не обнаружил на просторах GitHub и Bitbucket чего-то легкого, простого, и в того же время, мощного расширения для работы с конфигурацией приложения использующее в качестве хранилища параметров базу данных. Ведь не всегда хорошо хранить, например, название сайта в Yii:$app->params[]. Этого, конечно, чаще всего достаточно, но иногда вот такие моменты, как с названием сайта/проекта ставят разработку на "паузу" и"заставляют" продумывать решение. Я и раньше делал нечто подобное для всех своих проектов, но в этот раз я решил, что стоит этому уделить максимум внимания и перестать таскать файлы из проекта в проекта, т.е. моей задачей стало "Сделать модуль конфигурации приложения для Yii2".

Читать далее

Новая версия yii2-widget-cropbox

Готов сообщить радостную новость (по крайней мере для меня), что вышла новая версия кроппера 4.0.0! Лично я доволен как слон.

Изменения были очень весомые и, так как поменялась мажорная циферка в версии, тот как мы все знаем это значит, что расширение уже не совместимо с предыдущим. Поэтому, если хотите использовать в старом проекте, где была версия 3.*, то придется переписать чуточку кода.

Самое главное, что изменилось в кроппере, это то, что мной был написан jQuery плагин, что позволяет использовать кроппер не только в Yii Framework, но и в любых других проектах. В прошлых версиях я использовал обертку над одним готовым плагином для jQuery плюс некоторые дополнения в этот плагин. Но время не стоит, мы делаем код лучше и совершенствуемся. Например, после релиза плагина было замечено, что работает он в разы быстрей предыдущего.

Читать далее

XML конструктор

Понадобилось создать запрос в формате application/xml/text/xml? Или создать sitemap.xml? И ты в поисках обертки над XMLWriter? Тогда, ты её уже нашел!

Данная обертка позволяет создать XML файл из массива без особой возни и скромной затратой времени.

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Ссылка на GitHub: https://github.com/bupy7/xml-constructor

Читать далее

Конвертирование даты и времени в Yii2

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Ты решил заюзать DateTimePicker, но теперь, тебе приходится конвертировать дату и время перед сохранением? Не беда! Можно использовать сие расширение, позволяющее упростить задачу.

Данное расширение содержит внутри поведение, которое можно повешать на AR, при желании, и оно все сделает за вас. Самое главное - правильно настроить преобразователь.

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

Ссылка на GitHub: https://github.com/bupy7/yii2-datetime-converter

Читать далее