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.

Читать далее

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

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

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

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

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

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

Читать далее

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

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

Читать далее

Автоответчик в Gmail, Яндекс.Почта и Mail.ru

Современные почтовые веб-клиенты предоставляют обширные возможности автоматической обработки входящей почты. Одной из таких возможностей электронной почты является автоответчик. В данной статье мы расскажем как сделать автоответчик на все входящие письма и для конкретных адресов в трех самых популярных почтовых веб-клиентах: Google mail (Gmail), Яндекс.почта (Yandex) и Mail.ru.

Gmail

Автоматические ответы на все входящие письма
Автоматические ответы на входящие письма от конкретных адресатов
Полезно знать

Яндекс.Почта

Автоматические ответы на все входящие письма
Автоматические ответы на входящие письма от конкретных адресатов
Полезно знать

Mail.ru

Автоматические ответы на все входящие письма
Автоматические ответы на входящие письма от конкретных адресатов
Полезно знать

Читать далее

Ускорение приложений Angular с помощью ручной генерации HTML-кода

angularjs_logo-svg

Другие статьи по AngularJS:

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

Существует не совсем изящный, но действенный (и иногда единственный) способ ускорения отрисовки интерфейса в таких ситуациях. Это переписывание подобных блоков с использованием ручного построения DOM.

Этот способ не всегда одинаково хорошо ускоряет отрисовку. Его эффективность зависит от особенностей шаблона, который отрисовывается с задержками. В этой статье описано, в каких случаях этот способ даёт наилучшие результаты, а также, какие у него есть альтернативы (например, использование шаблонизатора jQote2), и приведено сравнительное время отрисовки вёрстки разными способами на различных примерах.

Читать далее

Как быстро построить круговую диаграмму на CSS и JavaScript

Для front-end разработчика существует огромное количество способов, которыми можно построить круговую диаграмму —  разнообразные библиотеки, плагины, потрясающие возможности SVG графики и т.д. Однако стоит, пожалуй, рассмотреть и самый простой способ создания «пирожкового» чарта, который может быть полезен, когда задача поставлена максимально просто и нет необходимости или возможности использовать дополнительные инструменты. Далее речь пойдёт о примере такой реализации.

Читать далее