Вызов функций всегда затратен, если это не inline. В наследство к нашему проекту досталась кучка макросов, сделанный специально для замены вызовов функций (как бы inline). В наши времена это уже не важно, но по традиции все пользуются макросами.
В принципе сегодня многие еще пользуются Pentium 4 2001-го года, и их устраивает — текстовые процессоры, музыка, видео (не HD), Skype, даже простые игры — все это на них работает. А вот 10 лет назад между новыми Pentium 4 и 486-ми года 1991-го лежала колоссальная пропасть в производительности.
Так что прогресс действительно замедлился (с точки зрения обычного пользователя).
Тогда получается, что мы с вами используем ревью совсем для разных целей. У нас это
— непрерывный контроль качества кода в процессе реализации,
— дополнение к не всегда хорошо поставленной верификации,
— помощь разработчикам в освоении новых для них частей системы.
У вас же это скорее некая метрика. Тоже интересный подход :)
Перебор возможен всегда, если перехвачены передаваемые данные. Поэтому слабый пароль может спасти только SSL-соединение и ограничение на количество неправильно введенных паролей.
Continuous Integration в первую очередь преследует цель котнроля качества ПО и гарантирует, что новая версия продукта
1) может быть без проблем собрана и готова к установке/обвнолению,
2) удовлетворяет требованиям, заложенным в автотесты.
Под новой версией подразумевается текущая разрабатываемая версия (trunc, head и т. п.).
Часто разработчик не может проверить эти два пункта перед каждым коммитом.
Continuous Integration отлично вписывается в Agile, который не выделяет времени в конце итерации на приведение продукта в божеский вид :)
Для изменения данных специальных механизмов нет. Фактически все делаем простыми и не очень update'ами. Но все они хранятся в патчах, которые инкрементально накатываются на базу. Это не удобно, но пока ничего лучше не придумали.
1. Да, XML хранится в CVS (так исторически сложилось).
2. Каждое изменение описывается в виде блока на PL/SQL по типу той, что в статье с information_schema. Проверяется, есть ли таблица/индекс/столбец таблицы с описанными свойствами. Если нет, то делается нужный ALTER (или CREATE).
Соответственно, такой блок можно получить из описания одного столбца на XML путем его непосредственного XSLT-преобразования сразу в PL/SQL. Сам XSL-файл, конечно, выглядит страшно :)
3. Привел не очень подходящую ссылку. Метамодель у нас выполняет несколько другие функции. Где-то на Хабре видел более близкое описание, но не смог найти. Когда-нибудь, возможно, она будет приведена здесь в отдельной статье. Коротко так: в метамодели описываются сущности и их атрибуты. Эта модель имеет признаки «объектности»: сущности имеют методы, могут наследоваться, быть абстрактными.
Список всех полей таблиц хранится в таблице метамодели. На него мапятся атрибуты сущности, которые хранятся в соответствующих полях. Это может быть и не простейшее отображение один к одному, хотя бы потому, что поле на самом деле может не являться столбцом таблицы, а вычисляться по формуле.
Формула, кстати — это атрибут поля, которое тоже является сущностью, хотя и не предметной модели, а самой метамодели. Поэтому описывается оно также, как и остальные атрибуты. Есть и описание таблицы-хранилища полей, которое в ней же и хранится.
Заполняется хранилище полей из тех же XML, разумеется.
> Должна быть общая для всех дев-база, на нее после каждого удачного релиза целиком копируется БД с продакшена вместе со всеми данными
Хе-хе, со всеми данными. К счастью, в большинстве случаев это невыполнимо. Хотя такая жесткая синхронизация всех баз сразу решает много проблем.
> Помните, что FAT32 не держит более 4 гигабайт!
Это вы FAT16 имели в виду? FAT32 поддерживает разделы > 4ГБ.
Так что прогресс действительно замедлился (с точки зрения обычного пользователя).
Например, питон и пайтон (хотя это тоже тема для холивара).
http://espanol.answers.yahoo.com/question/index?qid=20090209132025AAa3z9Z
— непрерывный контроль качества кода в процессе реализации,
— дополнение к не всегда хорошо поставленной верификации,
— помощь разработчикам в освоении новых для них частей системы.
У вас же это скорее некая метрика. Тоже интересный подход :)
1) может быть без проблем собрана и готова к установке/обвнолению,
2) удовлетворяет требованиям, заложенным в автотесты.
Под новой версией подразумевается текущая разрабатываемая версия (trunc, head и т. п.).
Часто разработчик не может проверить эти два пункта перед каждым коммитом.
Continuous Integration отлично вписывается в Agile, который не выделяет времени в конце итерации на приведение продукта в божеский вид :)
2. Каждое изменение описывается в виде блока на PL/SQL по типу той, что в статье с information_schema. Проверяется, есть ли таблица/индекс/столбец таблицы с описанными свойствами. Если нет, то делается нужный ALTER (или CREATE).
Соответственно, такой блок можно получить из описания одного столбца на XML путем его непосредственного XSLT-преобразования сразу в PL/SQL. Сам XSL-файл, конечно, выглядит страшно :)
3. Привел не очень подходящую ссылку. Метамодель у нас выполняет несколько другие функции. Где-то на Хабре видел более близкое описание, но не смог найти. Когда-нибудь, возможно, она будет приведена здесь в отдельной статье. Коротко так: в метамодели описываются сущности и их атрибуты. Эта модель имеет признаки «объектности»: сущности имеют методы, могут наследоваться, быть абстрактными.
Список всех полей таблиц хранится в таблице метамодели. На него мапятся атрибуты сущности, которые хранятся в соответствующих полях. Это может быть и не простейшее отображение один к одному, хотя бы потому, что поле на самом деле может не являться столбцом таблицы, а вычисляться по формуле.
Формула, кстати — это атрибут поля, которое тоже является сущностью, хотя и не предметной модели, а самой метамодели. Поэтому описывается оно также, как и остальные атрибуты. Есть и описание таблицы-хранилища полей, которое в ней же и хранится.
Заполняется хранилище полей из тех же XML, разумеется.
Хе-хе, со всеми данными. К счастью, в большинстве случаев это невыполнимо. Хотя такая жесткая синхронизация всех баз сразу решает много проблем.