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

Установка Bower на Debian 7/8

Установка Bower на Debian 7/8

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

Если проект не большой, или еще по каким-то другим причинам, вы не используете сборщик и инструменты деплоя, а обходитесь обычным git push/git pull - эта статья для вас.

Читать далее

Проблема сортировки в MySQL 5.6

Буквально вчера поднял тему о том, что в MySQL есть проблема с сортировкой полей, где есть не уникальные значения и используется пагинации. В случае, когда одна запись в конце странице, а вторая запись в начале следующей, и они одинаковые, да и еще их разделяет пагинация - одна из записей просто исчезает.

Создав в баг-трекере репорт по данной проблеме, я получил подтверждение по MySQL 5.6 и подтверждение о корректной работе на MySQL 5.5 и 5.7.

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

В баг-трекере есть ответ, что это, якобы, нормальная работа. Тогда вопрос: почему в 5.5 и 5.7 такой проблемы нет? Совпадение? Не думаю.

Ссылка на баг-трекере с подробным описанием и ответами: https://bugs.mysql.com/bug.php?id=83191

Читать далее

Именование поля с идентификатором

Практически каждый разработчик именует поля для связи с другой таблицей в формате <имятаблицы>_id. Но, вдруг в проекте вы замечаете, что в одном или в нескольких местах совсем не такое именование, а просто <имятаблицы>. Или наоборот, связи нет, а именовано по подобию <имятаблицы>_id. Это связано с тем, что когда-то эти поля имели (или не имели) связи с таблицей, а позже решили вынести все в код (или в таблицу). В итоге получается не очень красиво.

Читать далее

Создание форм в ZF3

Создание форм в ZF3

Мне очень нравится Zend Framework с выхода 2ой версии, но никогда не нравились формы. Формы в Zend Framework - это, ужас. Причем, мне не ясен подход разработчиков вообще, и не ясно, почему они считает это нормой. Чего же в них плохого?

Плохо то, что мы явно нарушаем принцип единственной ответственности, явно указываем тип поля у входного значения, расширяем элементы через декораторы. Это все очень плохо. Я не хочу знать вообще: какой тип поля у входного значения; я не хочу заботится о представлении в форме; я не хочу заботится о том, как это все будет выглядеть. Я просто хочу указать, что я жду. Все. На этом ответственность формы заканчивается. Не больше, ни меньше. Но как-то не делать так, как задумано - не получится. В любом случае, от типа поля и от трешовой манипуляции с формой в отображении мы не уйдем. Как я с этим борюсь?

Читать далее

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

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

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

  • умеет лить на 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 в таблице с пользователями.

Читать далее