![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера RMCreative.ru - Блог/Записи в блоге |
![]() |
RMCreative.ru - Блог
Голосов: 1 Адрес блога: http://rmcreative.ru/feed/ Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL |
Как хранить упорядоченный список в базе данных
2015-02-15 17:50:53 (читать в оригинале)Время от времени мне прилетают в почту занятные вопросы. Последний про хранение упорядоченного списка в базе данных.
Имеется возможность загрузки фото в альбомы. Нужно реализовать возможность упорядочивать фото в пределах альбома. Автор уже хранит порядок в поле order
, но его напрягает, что при перетаскивании какой-либо из картинок нужно обновлять order
у фотографий всего альбома.
Для начала, стоит оценить частоту изменений порядка фото. Если операция не очень частая и выполняется, например, только админом раз в день и в альбомах не очень много фото, можно смело хранить order
как integer
и обновлять, как автор и делает.
Если же операция достаточно частая, можно схитрить и хранить order
как decimal
. В этом случае при вставке или перемещении фото между двумя другими необходимо обновить только order
непосредственно перемещаемой записи.
Если мы перемещаем фото C
и засовываем его между фото A
и фото B
, то значение order
для него вычисляется как
C.order = A.order + (B.order - A.order) / 2;
UPD: из за ограничений точности следует проверять, влезет ли в базу очередное значение. Если нет — пересчитывать order
. Даже несмотря на то, что от пересчётов мы не избавились, их частота сократилась для худшего случая на порядок.
YiiGist - каталог расширений Yii
2015-02-04 18:44:45 (читать в оригинале)До этого момента у Yii не было нормального каталога пакетов. Команда Yii занимается новой версией сайта, но пока не всё готово и релизить нельзя. Официально мы рекомендовали использовать packagist.org и искать там "yii". Это более-менее работало, но было не совсем удобно. Думаю, поэтому сообщество запустило неофициальный проект YiiGist.
YiiGist позволяет зайти используя GitHub и пометить один или несколько репозиториев как пакет Yii 1 или Yii 2. Все помеченные пакеты доступны в каталоге. Есть поиск, информация вытягивается как из GitHub, так и из packagist.
http://yiigist.com/
Как вам?
История Yii
2015-02-02 16:10:08 (читать в оригинале)Prado
В июне 2004-го Qiang Xue релизнул первую версию фреймворка PRADO. Вдохновение он черпал из Apache Tapestry, Borland Delphi и Microsoft ASP.NET.
Примерно в это же время Zend затеяли конкурс по переходу на PHP5, известный также как gophp5. Qiang переписал фреймворк на PHP 5 и выиграл конкурс.
В то время проект хостился на SourceForge. В середине 2005 Wei Zhuo помог с i18n и l10n, что вылилось в версию 2.0.
В мае 2005 было решено переписать проект, включив в него новые фишки Microsoft ASP.NET 2.0. В апреле 2006 была выпущена версия 3.0. Начиная с неё команда занималась, по большей части, качеством кода и его стабильностью.
PRADO всё ещё жив и используется относительно активно.
Yii
В октябре 2006 Qiang анонсировал альфу Yii на форумах PRADO.
Третьего декабря 2008 вышла версия 1.0.0. Много всего было взято из PRADO: ActiveRecord, i18n, l10n и так далее. Также вдохновение черпалось из RoR (соглашения и некоторые фичи AR), symfony1 (фильтры и плагины) и Joomla (модули и перевод сообщений).
Yii 1.0.0 был гораздо быстрее остальных фреймворков, обладающих сходной функциональностью и сообщество быстро разрослось.
В январе 2010 вышел Yii 1.1, давший нам построитель форм, реляционные запросы AR, готовый каркас для unit-тестов и многое другое.
Я присоединился к команде в 2010. В конце года мы начали обсуждать Yii 1.2 не прекращая разрабатывать 1.1. В мае 2011 было решено перейти на новые версии PHP и поправить архитектурные ошибки. То есть делать сразу 2.0. Тогда же был сделан первый коммит в тогда ещё секретный репозиторий.
В мае 2013 секретные код был выложен на всеобщий обзор. В октябре 2014 состоялся первый стабильный релиз Yii 2.0.
С Yii 1.1 на Yii 2.0, часть 3: приложения
2015-01-13 06:45:37 (читать в оригинале)В 1.1 был только один шаблон приложения, который можно было развернуть через yiic webapp
после того, как вы скачаете сам фреймворк. Команда копировала шаблон приложения из директории фреймворка в указанную вами директорию.
В 2.0 шаблоны, как и всё остальное, ставятся через Composer. Ничего предварительно скачивать не нужно. Команда напоминает команду из 1.1, разве что указывается из какого пакета ставить шаблон:
composer create-project --prefer-dist yiisoft/yii2-app-basic my/dir/basic
Стандартных шаблона два: basic и advanced. Есть возможность делать свои. Например, я сделал minimal. Начать изучение фреймворка лучше с basic. Это не значит, что данный шаблон чем-то хуже advanced, просто он больше похож на 1.1:
assets — классы-конфиги asset-ов commands — консольные команды config — конфиги controllers — контроллеры mail — шаблоны для писем models — модели runtime — логи и другие временные данные tests — тесты vendor — зависимости, вытягиваются Composer-ом views — шаблоны для веб web — вебрут assets — уже опубликованные asset-ы index.php — входной файл ./yii — входной файл для консольного приложения, аналог yiic из 1.1
Присутствуют директории, которых в 1.1 не было: assets
, mail
, vendor
. Assets хранит классы, описывающие подключение CSS и JavaScript для веб-приложения. В mail
хранятся шаблоны для писем, vendor
заполняется Composer-ом и лезть туда руками не стоит.
Некоторые директории из 1.1 отсутствуют. Стоит отметить components
, extensions
, messages
и migrations
. Директория extensions
более не нужна. Расширения ставятся через Composer и автоматически попадают в vendor
. messages
и migrations
автоматически создаются по мере необходимости. В components
нет нужды. В 2.0 можно раскладывать классы в любые директории. Они будут загружаться автоматически, если их namespace соответствует. Если вам без components
не уютно, можно создать.
Ещё одним важным отличием от 1.1 является то, что index.php
располагается не в корне приложения, а в директории web
. То есть в качестве webroot надо указывать именно директорию web
. Весь код при этом не будет видно через веб, что более безопасно. В 1.1 приходилось делать подобную структуру вручную каждый раз.
Реструктуризация создаёт некоторые проблемы на shared-хостинге. Если вам можно загружать файлы выше webroot, достаточно переименовать web
в название webroot на вашем сервере. Если загружать выше webroot нельзя (что не очень часто), придётся переложить index.php
на уровень выше и поправить в нём пути. То есть фактически привести всё к 1.1.
Advanced отличается тем, что разделяет код на несколько приложений, каждое со своим входным файлом в расчёте на несколько доменов. Окружения реализованы через локальные конфиги. Также в нём имеется готовая регистрация и восстановление пароля и готовая модель User
, привязанная к базе данных. Всё это описано в руководстве. В остальном шаблоны схожи.
← С Yii 1.1 на Yii 2.0, часть 2: Composer
Yii 2.0.2
2015-01-13 05:58:16 (читать в оригинале)Выпустили версию 2.0.2, являющуюся патч-релизом и полностью обратно совместимую. В неё вошли около 40 исправлений и мелких улучшений.
Полный анонс читайте на хабре
![BlogRider сегодня BlogRider сегодня](/themes/1/i/menu/th/blogrider_today.png)
![Изменения рейтинга Изменения рейтинга](/themes/1/i/menu/th/rating_changes.png)
![]() | ||
+173 |
226 |
Наша жизнь просто прекрасна |
+168 |
219 |
Little Showroom |
+160 |
212 |
Heilig |
+147 |
233 |
Ulanet.ru - Информационно-развлекательный сайт города Улан-Удэ |
+17 |
29 |
КАТЯ ЧЕХОВА 2008 |
![]() | ||
-1 |
43 |
Диетические рецепты |
-1 |
8 |
Nique |
-1 |
73 |
Список диет |
-2 |
9 |
Vlad_Topalov |
-2 |
10 |
Комедийный сериал |
![Главные темы Главные темы](/themes/1/i/menu/th/main_themes.png)
Загрузка...
![Загрузка... Загрузка...](/themes/1/i/loader/loader.gif)
взяты из открытых общедоступных источников и являются собственностью их авторов.