TODO для скучающих
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
TODO для скучающих
Возникла идея организовать своеобразный TODO для скучающих Yii-программистов.
Все желающие могут как оставить свои заявки на создание какого-либо интересного расширения для Yii, так и взять одну из размещённых заявок.
Уже разрабатываемые идеи отмечены подчёркиванием.
Все желающие могут как оставить свои заявки на создание какого-либо интересного расширения для Yii, так и взять одну из размещённых заявок.
Уже разрабатываемые идеи отмечены подчёркиванием.
Нравится Yii? Давайте сделаем его лучше!.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: TODO для скучающих
Commentable
Поведение (behaviour) для моделей + набор формочек и всяких других плюшек, позволяющий через конфиг и самые минимальные правки прицепить комментарии к любой модели.
Расширения: Eav (паттерн Entity Attribute Value)
Даёт возможность хранить в базе объекты с свободным набором полей.
Расширения: Localizable
Даёт возможность прозрачно работать с моделями, хранящими информацию на разных языках.
Расширения: Taggable
Даёт возможность прозрачно назначать теги моделям.
Расширения: NestedSet
Поведение для работы с деревьями, хранящимися как вложенные множества.
Расширения: SoftDelete
Позволяет мягко удалять и восстанавливать записи.
Расширения:
Поведение (behaviour) для моделей + набор формочек и всяких других плюшек, позволяющий через конфиг и самые минимальные правки прицепить комментарии к любой модели.
Расширения: Eav (паттерн Entity Attribute Value)
Даёт возможность хранить в базе объекты с свободным набором полей.
Расширения: Localizable
Даёт возможность прозрачно работать с моделями, хранящими информацию на разных языках.
Расширения: Taggable
Даёт возможность прозрачно назначать теги моделям.
Расширения: NestedSet
Поведение для работы с деревьями, хранящимися как вложенные множества.
Расширения: SoftDelete
Позволяет мягко удалять и восстанавливать записи.
Расширения:
Нравится Yii? Давайте сделаем его лучше!.
Re: TODO для скучающих
ShopingCart
Библиотека с базовым функционалом Корзины товаров.
Расширения:
CombineClientScripts
Библиотека для обфускация, слияния и компрессии js и css.
у нас есть метод Yii::app()->clientScript->scriptMap , почему бы не расширить его таким функционалом?!
например как вариант, в конфиге хранить текущую версию скрипта(после изменения клиентских скриптов версию менять вручную в сторону увеличения). scriptMap при запуске,
сверяет версию в конфиге и версию слитого файла, и если они не совпадают, то он должен провести все манипуляции над нужными файлами и слить их заново переписав фаил.
помимо этого scriptMap при вставке ссылке на слитый фаил в html код, дописывает в конце версию (типа all.pack.js?version=5), для того чтоб браузеры обновили кэш этого файла...
TaskQueue
Библиотека для параллельного запуска однотипных задач в бекграунде.
По типу http://dev.kohanaphp.com/projects/task-queue
Библиотека с базовым функционалом Корзины товаров.
Расширения:
CombineClientScripts
Библиотека для обфускация, слияния и компрессии js и css.
у нас есть метод Yii::app()->clientScript->scriptMap , почему бы не расширить его таким функционалом?!
например как вариант, в конфиге хранить текущую версию скрипта(после изменения клиентских скриптов версию менять вручную в сторону увеличения). scriptMap при запуске,
сверяет версию в конфиге и версию слитого файла, и если они не совпадают, то он должен провести все манипуляции над нужными файлами и слить их заново переписав фаил.
помимо этого scriptMap при вставке ссылке на слитый фаил в html код, дописывает в конце версию (типа all.pack.js?version=5), для того чтоб браузеры обновили кэш этого файла...
TaskQueue
Библиотека для параллельного запуска однотипных задач в бекграунде.
По типу http://dev.kohanaphp.com/projects/task-queue
Re: TODO для скучающих
Модуль рассылки сообщений по базе получателей, с драйверами: email, ЛС, sms, etc., в первую очередь конечно же для email.
Это не готовое задание ,а идея, которую надо ещё развить...
Основная идея:
В приложении создается рассылка, для каждой рассылки создается очередь получателей .(данные о рассылки и получателях, хранится в бд).
Рассылка может быть как на несколько миллионов получателей(новостная рассылка), так и на одного пользователя(уведомление о комментарии).
У каждой рассылки есть шаблон, приоритет отправки, дата отправки и др параметры.
Отправка рассылки происходит НЕ в момент её создания, а в определенный период:
к примеру кроном каждые 5 минут проверять бд на наличие не отправленных рассылок, выбирать актуальные на данный момент, сортировать их по приоритету и запускать собственно сам процесс рассылки.
По скольку подписчиков может быть несколько миллионов, а сроки рассылки ограниченны - процесс рассылки должен проходить в несколько потоков(процессов).
По окончанию процесса рассылки для записи в бд ставится флаг ,что рассылка законченна.
_________________________________________________
примерный API для создания рассылки:
В базу добавилась запись о новой рассылке ,а в таблицу подписчиков, добавлен список всех подписчиков этой рассылки.
Далее крон который отрабатывает раз в 5 минут ищет не отправленные рассылки.
Это лишь Примерная архитектура, хочется в первую. очередь услышать предложения по улучшению архитектуры и тд.
Это не готовое задание ,а идея, которую надо ещё развить...
Основная идея:
В приложении создается рассылка, для каждой рассылки создается очередь получателей .(данные о рассылки и получателях, хранится в бд).
Рассылка может быть как на несколько миллионов получателей(новостная рассылка), так и на одного пользователя(уведомление о комментарии).
У каждой рассылки есть шаблон, приоритет отправки, дата отправки и др параметры.
Отправка рассылки происходит НЕ в момент её создания, а в определенный период:
к примеру кроном каждые 5 минут проверять бд на наличие не отправленных рассылок, выбирать актуальные на данный момент, сортировать их по приоритету и запускать собственно сам процесс рассылки.
По скольку подписчиков может быть несколько миллионов, а сроки рассылки ограниченны - процесс рассылки должен проходить в несколько потоков(процессов).
По окончанию процесса рассылки для записи в бд ставится флаг ,что рассылка законченна.
_________________________________________________
примерный API для создания рассылки:
Код: Выделить всё
$mailing = new Mailing; //создаем новую рассылку
$mailing->setType('news'); //устанавливаем тип. Дополнительная информация(приоритет, откого, etc ) хранится в таблице типов_рассылки.
$mailing->setName('новая рассылка');
$mailing->setTemplate('шаблон');
$users = User::model()->findAll();
$mailing->AddRecipients($users); //добавляем подписчиков
Далее крон который отрабатывает раз в 5 минут ищет не отправленные рассылки.
Код: Выделить всё
$mailings = mailing::model()->with('mailing_type')->findAll($criteria); //нашли все рассылки актуальные на данный момент, отсортировали по приоритету
для каждой рассылки запускем отдельный рассыльщик
foreach($mailings as $mailing)
{
$sender = new Sender;
$sender->setName($mailing->name);
$sender->setFrom($mailing->mailing_type->from);
$sender->setRecipients($mailing->getRecipients());
$sender->execute();
//рассыльщик в зависимости от длины очереди, делит её и запускает в несколько потоков.
}
Re: TODO для скучающих
ну мне тоже так кажется, но нужно предусмотреть множество нюансов, и грамотно все спроектировать...
Возможно у кого-то есть наработки на эту тему или просто какие то мысли...
После того как архитектура будет полностью ясна, я (возможно с участием кого то из сообщества) реализуем расширение для yii с таким функционалом...
Есть уже примерная архитектура бд, и почти готовая диаграмма классов...
Возможно у кого-то есть наработки на эту тему или просто какие то мысли...
После того как архитектура будет полностью ясна, я (возможно с участием кого то из сообщества) реализуем расширение для yii с таким функционалом...
Есть уже примерная архитектура бд, и почти готовая диаграмма классов...
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: TODO для скучающих
У меня есть подобный набор классов. Отписал в личку.
Нравится Yii? Давайте сделаем его лучше!.
Re: TODO для скучающих
мм, спасибо!, но ни чего не приходило в ЛС! или у нас тут рассылка по ЛС, тоже по крону делается?)Sam Dark писал(а):У меня есть подобный набор классов. Отписал в личку.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: TODO для скучающих
Отправил код почтой. При отправке ЛС я промахнулся кнопкой…
Нравится Yii? Давайте сделаем его лучше!.
Re: TODO для скучающих
спасибо, получил! Будем изучать.
Как будет что то более менее готовое(хотя бы по архитектуре) создам отдельный топик для расширения, где уже будем обсуждать конкретную реализацию.
Как будет что то более менее готовое(хотя бы по архитектуре) создам отдельный топик для расширения, где уже будем обсуждать конкретную реализацию.
-
- Сообщения: 54
- Зарегистрирован: 2010.06.12, 22:18
- Откуда: Набережные Челны
- Контактная информация:
Re: TODO для скучающих
Есть такой сайт - racios.com. Использует идеи GTD http://ru.wikipedia.org/wiki/Getting_Things_Done Но он платный и довольно дорогой. Может кто в качестве обучения сделает на Yii нечто подобное? В общем-то сложного для опытного программиста там ничего нет. А штука очень полезная.
Re: TODO для скучающих
Не хватает Yii одного поведения:
SortableBehaviour
Чтобы можно было сохранять сортировку элементов.
SortableBehaviour
Чтобы можно было сохранять сортировку элементов.
Re: TODO для скучающих
К примеру, выводится список статей, и они должны быть именно в определённом порядке (в списке).Sam Dark писал(а):То есть сохранять?
Для того, чтобы они всегда были в нужном порядке, должна быть возможность их сортировать.
По умолчанию GridView такой возможности не предоставляет. Но если прикрутить к таблице плагин UI.Sortable, то строки можно сортировать.
Это довольно распространённая задача, поэтому я с предлагаю написать поведение Sortable, у которого был бы метод - saveSort, или просто триггер, который бы сохранял нужный порядок, и была настройка имени поля, в котором хранится порядок.
Re: TODO для скучающих
Комманда для автоматических генериций миграция на основе существующей схемы бд и уже проделаных миграций.
Re: TODO для скучающих
уже реализовал, но нужно вычленить из проекта и причесать код - в ближайших планахpirrat писал(а): 3)TaskQueue библиотека для параллельного запуска однотипных задач в бекграунде
Re: TODO для скучающих
в рамках одного из проектов необходима реализация мобильного приложения (html5+css), есть мысль использовать для работы http://jquerymobile.com/ с разработкой соответствующего расширения. на вскидку не нашел реализаций. я плохо искал или пока действительно не существует расширения для создания мобильных приложений? не хочется велосипед изобретать
Re: TODO для скучающих
вот еще TODO
добавить нативную поддержку для тегирования кешей
что бы все не повторять http://www.yiiframework.com/forum/index ... %82%D0%B5/
добавить нативную поддержку для тегирования кешей
что бы все не повторять http://www.yiiframework.com/forum/index ... %82%D0%B5/
По поводу тегирования кешей.
У нас почти все кеши имеют "вечное время жизни", и инвалидируються вручную.
Cache dependencies которые есть в Yii, да а те которые я успел выше написать - это не совсем то что нужно.
В текущем исполнении если зависимости кеша не проходят проверку Yii не возвращает кеш вообще. Нам же нужно что бы даже если зависимость (версия тега) не прошла проверку, Yii вернул старые данные при этом уведомив получателя о том что кеш устарел. А получатель тогда уже решит что ему делать, попытаться обновить кеш или использовать устаревшие данные.
Написать отдельную штуку для такого можно, но хочеться что бы она гармонично вписалась в Yii, сохранив при этом все стандартные способы использования йиишного компонента кеша.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: TODO для скучающих
У меня в блоге была ссылка на реализацию. Зачем оно нативно нужно я не особо представляю, если честно.
Нравится Yii? Давайте сделаем его лучше!.