Skip to Content

Ручные миграции баз данных

Содержание статьи

Структура скрипта миграции
Таблица истории миграций
Добавление not null столбца
Изменение типа столбца
Добавление индекса
Удаление индекса
Добавление внешнего ключа в таблицу
Добавление родительской таблицы с созданием not null ключа в дочерней таблице
Изменение первичного ключа
Добавление вьюхи

При промышленной эксплуатации клиент-серверных систем остро встает вопрос как обновить базу данных до новой структуры. Уже много лет для этого широко используется подход последовательных миграций, который был популяризирован платформой Ruby on Rails. Миграции представляют собой sql-скрипты, содержащие выражения DML для изменения структуры БД, а также логику, обеспечивающую безопасное применение миграции. Есть множество способов автоматической генерации миграций, в этой статье будет описан подход для ручного создания таких скриптов для баз данных под управлением Microsoft Sql Server.

Читать далее

Новые стандартные механизмы .NET. Часть 3. Логирование

Вводная

Это небольшая серия статей про новые стандартные механизмы в .NET. Вместе с выпуском .NET Standard Microsoft выпустили большое количество обвязок, которые должны привести в порядок некоторый зоопарк используемых технологий.

В первой статье (IoC-контейнер) мы поговорили про то, почему это круто — иметь реализацию DI-контейнера по умолчанию, и почему в большинстве случаев стоит использовать именно его. Также написали простую реализацию биндинга по атрибутам.

Во второй (Конфигурация) я рассказал про недостатки старого способа конфигурирования приложения (через app.config/web.config) и про то, как они исправлены в новом подходе.

В этой — третьей — посмотрим на стандартный интерфейс логирования и прикрутим к нему привычный NLog.

Далее следует план статей по очереди их публикации. Все статьи доступны в нашем блоге.

Читать далее

Новые стандартные механизмы .NET. Часть 2. Конфигурация

Вводная

Это небольшая серия статей про новые стандартные механизмы в .NET. Вместе с выпуском .NET Standard Microsoft выпустили большое количество обвязок, которые должны привести в порядок некоторый зоопарк используемых технологий.

В первой статье (IoC-контейнер) мы поговорили про то, почему это круто — иметь реализацию DI-контейнера по умолчанию, и почему в большинстве случаев стоит использовать именно его. Также написали простую реализацию биндинга по атрибутам.

В этой — второй — я расскажу про недостатки старого способа конфигурирования приложения (через app.config/web.config) и про то, как они исправлены в новом подходе.

В третьей (Логирование) посмотрим на стандартный интерфейс логирования и прикрутим к нему привычный NLog.

Далее следует план статей по очереди их публикации. Все статьи доступны в нашем блоге.

План

  1. IoC-контейнер.
  2. Конфигурация.
  3. Логирование.

Текущая статья посвящена второй теме плана — Конфигурация.

Читать далее

Новые стандартные механизмы .NET. Часть 1. DI-контейнер

Вводная

Это небольшая серия статей про новые стандартные механизмы в .NET. Вместе с выпуском .NET Standard Microsoft выпустили большое количество обвязок, которые должны привести в порядок некоторый зоопарк используемых технологий.

В этой — первой — статье поговорим про то, почему это круто — иметь реализацию DI-контейнера по умолчанию, и почему в большинстве случаев стоит использовать именно его. Также напишем простую реализацию биндинга по атрибутам.

Во второй (Конфигурация) я расскажу про недостатки старого способа конфигурирования приложения (через app.config/web.config) и про то, как они исправлены в новом подходе.

В третьей (Логирование) посмотрим на стандартный интерфейс логирования и прикрутим к нему привычный NLog.

Далее следует план статей по очереди их публикации. Все статьи доступны в нашем блоге.

План

  1. IoC-контейнер.
  2. Конфигурация.
  3. Логирование.

Текущая статья посвящена первой теме плана — IoC-контейнер.

Читать далее

TS-WORD. Генератор Word-документов для .NET приложений

В рамках своих проектов мы часто сталкиваемся с такой задачей, как выгрузка (экспорт) различных данных в Word-документ заданного шаблона.

Поэтому мы разработали библиотеку, которая позволяет генерировать документы Word на основе имеющейся в Вашем .NET приложении модели данных и шаблона документа, созданного в Word.

Читать далее

Проект. Официальный информационный портал ЕГЭ

В 2015-2016 гг. команда TS Soft в рамках работ над проектами Министерства образования РФ разработала специальную устойчивую к высоким нагрузкам систему для учеников школ России.

При требовании к обеспечению нагрузки в 4 тыс. обращений в секунду, команде TS Soft удалось добиться уровня допустимой нагрузки в пике до 10 тыс. обращений в секунду.

Вакансии в разработке высоконагруженных приложений.

Читать далее

Мокирование в приложениях web mvc

Другие статьи по юнит-тестированию:

Проекты с примерами из статьи:

Зачем нужны моки
Юнит-тестирование класса, работа которого не зависит от поведения других классов — несложная задача. Мы можем написать что-то вроде:

assertEquals(4, calculator.add(2, 2));

Но приложение web mvc, как правило, состоит из нескольких независимых слоев:
Архитектура MVC-приложения

Читать далее

Проект. Система тестирования «Мои достижения»

В середине 2016 года в промышленную эксплуатацию была запущена web-система «Мои достижения», которая разрабатывалась нами  в течение нескольких месяцев.

  • За полгода работы сервиса учениками школ пройдено более 20 тыс. тестов.
  • В сервисе содержатся тесты для каждого с 1 по 11 класс средней школы. Охватывается от 3 до 10 школьных предметов для каждого класса.
  • В системе реализована подробная аналитика. Сервис отражает результат каждого тестирования, показывает прогресс по каждому предмету, подробно — более, чем по 50 элементам — показывает уровень освоения материала по предмету.
  • В системе реализован специальный модуль для организации онлайн видеоконференции между учеником и экспертом Московского центра качества образования. Ученик и эксперт могут совместно работать с тестом, просматривая, обсуждая и внося правки в ответы.

Хочу работать на таких проектах.

Читать далее

Коллекции в .NET

Коллекции – структуры данных для работы с наборами однотипных объектов.

Когда решается, какую именно структуру использовать для хранения или передачи коллекции, стоит подумать о следующем:

  • в первую очередь, какой класс лучше передаёт намерение разработчика и смысл переменной. Например, если по логике приложения где-то нужна коллекция с уникальными объектами, в которой не нужны повторные вхождения, следует рассмотреть использование коллекций-множеств, а если нужно запретить изменять коллекцию после создания, стоит взглянуть в сторону иммутабельных классов.
  • далее, какие операции будут часто производиться с коллекцией, и насколько быстро их выполняют разные реализации.

Читать далее

AbstractCalendar.JS. Когда нужно больше, чем Datepicker

В некоторых проектах возникает необходимость разработать календарь с необычным функционалом или дизайном. Чтобы сделать это, можно использовать готовые компоненты (например, jQuery UI Datepicker), либо писать код календаря с нуля. Для упрощения такой задачи можно использовать утилиту AbstractCalendar.JS.

Читать далее