• Система настроек и смена версий программ: эволюция жизнеспособных форм

      Константно-переменный дуализм.

      Настройки у программ существуют давно, от самых древних ассемблерных программ, имеющих в своём коде константы в качестве настроек. Обновление таких программ происходило с полной заменой кода, поэтому изменение системы настроек не влекло отрицательных последствий. В худшем случае, приходилось переучиваться пользованию интерфейсом. Положение стало меняться при преемственности типов данных и настроек программ. В своё время Microsoft уделяла огромное внимание совместимости программ и данных в операционных системах, в чём была их сильная сторона. Да и сейчас поддержка режима XP Mode — это продолжение политики совместимости. Применительно к веб, пользователям часто встречаются ситуации, когда данные и настройки у них остаются от прежних версий (в куках, в сторонних базах данных), а версия программы — на сервере или скрипт на клиенте — изменяется. Возникает проблема совместимости версий программ и данных и необходимость выработки некоторой политики поддержки совместимости. Новая версия может не устроить по совместимости с браузерами (из-за багов или неполной поддержки), тогда откат к прежней на время исправления багов не должен сопровождаться потерей или искажением настроек, при том, что количество их может меняться с изменением версии.

      Требуется подход не просто к настройкам и их организации, а к проблемам смены версий и преемственности настроек. Программы в вебе развиваются мелкими шагами, смена версий происходит часто. Такой же подход к работе с настройками относится и к другим программам, не связанным с вебом, но имеющим частую смену версий. Аналогичные рассуждения можно отнести к форматам всех данных в программах, не только к форматам хранения настроек.
      Читать дальше →
      • +29
      • 2,4k
      • 2
    • Основные тезисы конференции HighLoad++ 2011

        imageВ октябре 2011 года в Москве проходила ежегодная конференция разработчиков высоконагруженных проектов HighLoad++.
        Решил поделиться с читателями основными тезисами с конференции. Поскольку вся информация открыта и доступна на странице конференции, решил что собрать все тезисы вместе будет не такой уж и плохой затеей. Сразу отмечу, что в отчёте не содержится детальной информации о каждом докладе — затронуты лишь ключевые моменты.
        Итак, о чём говорилось на HighLoad++ 2011.
        Читать дальше →
        • +28
        • 3,5k
        • 2
      • Что такое «асинхронная событийная модель», и почему сейчас она «в моде»

        Сейчас в тематических интернетах модно слово «Node.js». В этой небольшой статье мы попробуем понять («на пальцах»), откуда всё это взялось, и чем такая архитектура отличается от привычной нам архитектуры с «синхронным» и «блокирующим» вводом/выводом в коде приложения (обычный сайт на PHP + MySQL), запущенного на сервере приложений, работающем по схеме «по потоку (или процессу) на запрос» (классический Apache Web Server).
        Читать дальше →
      • Миграции БД для .NET

          Добрый вечер!

          Вышла версия 2.0 инструмента для версионной миграции БД - ECM7.MigratorНедавно здесь поднималась тема версионного изменения структуры БД. Среди готовых решений для миграции БД (для .NET-проектов) там упоминался проект ECM7.Migrator, одним из авторов которого я являюсь.

          Вчера мы, наконец, отрелизили версию 2.0. Взять новую версию можно на страничке проекта в google code и в галерее пакетов nuget.

          Краткий рассказ о миграторе и список изменений новой версии под катом..
        • Масштабируемые JavaScript приложения

            Более месяца назад в статье FAQ по JavaScript: задавайте вопросы был задан вопрос «Подскажите примеры хорошего подхода организации JS кода к сайту на достаточно высоком уровне. Как можно узнать подробнее практики реализации например gmail?».

            Пришло время ответить на данный вопрос. Я немного затянул т.к. хотел рассказать доклад на одноименную тему на Я.Субботнике. Доклад был очень коротким многие важные моменты пришлось выкинуть. Статья — более-менее полная версия.

            Эта статья о том, как сделать крупное веб-приложение расширяемым и поддерживаемым: архитектура, подходы, правила.
            Читать дальше →
          • MS SQL 2011 – новый оператор Offset

            • Перевод
            В новом SQL Server 2011 (Denali) расширяются возможности команды Order By с помощью двух долгожданных дополнительных команд:
            • Offset (смещение)
            • Fetch First или Fetch Next (взять первые… или взять следующие…)


            Offset


            Использование данной команды позволяет пропустить указанное количество строк перед тем как выводить результаты запроса. Что под этим подразумевается: Допустим, у нас есть 100 записей в таблице и нужно пропустить первые 10 строк и вывести строки с 11 по 100. Теперь это легко решается следующим запросом:
            Select *
            From  <SomeTable>
            Order by  <SomeColumn>
            Offset 10 Rows

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

            Читать дальше →
          • MS SQL 2011 — Обработка ошибок

            • Перевод
            Новое полезное дополнение для SQL Server 2011 (Denali) ­– выражение Throw. Разработчики на .Net уже догадались наверно, где и как оно будет использоваться.

            Это слово может использоваться в сочетании с управляющей конструкцией Try…Catch и позволяет послать уведомление о возникновении ошибки времени исполнения. Когда возникает исключение, программа ищет ближайший по иерархии вверх блок Catch который может обработать исключение. Используя это выражение внутри блока Catch можно изменить вывод ошибки. Более того, теперь вызывать исключение можно произвольно в любом месте скрипта.

            Далее рассмотрим различные способы поимки исключении, которые предоставляет SQL Server начиная с версии 2000 и до версии 2011, с указанием плюсов и минусов.

            Читать дальше →
          • Вышел Firefox 6 alpha 1

              Сегодня, 13 апреля, произошёл релиз Firefox 6 alpha 1, разработка которого завершится 18 августа 2011.



              Скачать его можно с Mozilla.org FTP: ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk
              Там же можно скачать пререлизную версию Firefox 5, которая пока идёт под номером 4.2 prealpha 1 и выйдет «на золото» 21 июня 2011 (детали возможного дизайна можно найти на сайте areweprettyyet.com). Firefox 7 выйдет также в 2011 году.

              Вместе с тем же событием произошёл отказ от названия «ночных сборок» кодовым именем Minefield (англ., минное поле, что символизирует) — теперь они называются просто Nightly и, как и прежде, обновляются каждый вечер МСК.

              Ссылки для прямой загрузки (все версии — на английском языке):
              Скачать Firefox 6 alpha 1 для 32-битной Windows (13 Мб)
              Скачать Firefox 6 alpha 1 для OS X (34 Мб)
              Скачать Firefox 6 alpha 1 в tar/bzip2 для Linux i686 (14 Мб)
              Скачать Firefox 6 alpha 1 в tar/bzip2 для Linux x86_64 (15 Мб)

              Немного об изменении модели разработки FIrefox
            • TransactionScope — заманчивый, но коварный

                Давным-давно вышел ADO.NET 2.0, а вместе с ним и сборка System.Transactions, содержащая класс TransactionScope — путеводитель в мир легкого и непринужденного использования транзакций. В сегодняшней статье я рассмотрю некоторые нюансы, возникающие при использовании этой дырявой, но такой симпатичной абстракции.

                Читать дальше →
                • +26
                • 15,1k
                • 9