Действительно ли ежедневные сборки являются способом пойти для веб-приложения?

Существуют, несколько вещей, которые необходимо иметь в виду при разработке многоязыковой поддержки:

1 - Отдельный код от данных (т.е. делают правильно не строки твердого кода в Ваши функции)

2 - создают функцию рычага форматирования для контакта с различиями в локализации. Разрешение formattable строк (" {0} ") лучше, чем конкатенация ( "Добро пожаловать в" + значение ) по большому количеству причин:

  • на некоторых языках, число отформатировано как 1.234.678,00 вместо 1 234 567,00
  • , плюрализация часто не так проста как добавление "s" в конце исключительного
  • , грамматические правила отличаются и могут влиять на порядок вещей, таким образом, необходимо позволить динамическим данным быть добавленными после рычага перевода: например, "Добро пожаловать в {0} " превращается " {0} он youkoso" на японском языке (это происходит на в значительной степени каждом языке, возражайте против Вас).

3 - Удостоверяются, что Вы можете на самом деле строки формата после выполнения рычага перевода, таким образом, можно снова использовать ключи.

4 - не Делают, ни под каким circunstance, сцепляют выводы базы данных с утилитой переводчика. Если Вы имеете многоязычные данные, составляете отдельные таблицы / строки в Вашей базе данных. Я видел, что люди понимают эту легкую задачу превратно справедливо часто (обычно для стран и состояний/областей в формах).

5 - Создают явные правила методов кодирования для создания ключей. Функция утилиты средства форматирования (который посмотрит что-то как [1 118], переводят ("привет мир") , возьмет ключ в качестве параметра, и ключи с небольшими изменениями делают maintainance очень раздражающий. Например, Вы могли бы закончить с тремя ключами в следующем примере: "введите Вас имя", "вводят Ваше имя": "вводят Ваше имя":. выберите один формат (например, никакое двоеточие, обрезанное), и поймайте несоответствия в обзорах кода. Не делайте этой фильтрации программно, поскольку она может инициировать ложные положительные стороны.

6 - Быть внимательным, что разметка HTML могла потенциально быть необходима в таблице преобразования (например, если Вы нуждаетесь к полужирному в слове в предложении или имеете сноску медицинские ссылки). Тест для этого экстенсивно.

7 - существует несколько способов импортировать строки языка. Идеально, Вы должны иметь несколько версий language.lang.js файла, переключателя между ними с серверным кодом, и сослаться на файл от нижней части файла HTML. Получение по запросу файла через Ajax является также альтернативой, но могло представить задержки. Слияние language.js в Ваш основной файл кода не желательно, так как Вы теряете преимущества кэширования файлов.

8 - Тест с Вашими выходными языками. Это звучит глупым, но я видел серьезную ошибку однажды, потому что программист не потрудился проверять на существование "Г©" в ключе.

9
задан Taryn 11 May 2012 в 11:41
поделиться

6 ответов

Вы можете легко запустить все свои модули Django тесты через среду тестирования Django в качестве вашей ночной сборки.

Это то, что мы делаем.

У нас также есть несколько обычных модульных тестов, которые не используют возможности Django, и мы их тоже запускаем.

Хотя Python (и Django) не требуют той ночной компиляции / компоновки / модульного тестирования, как это делают скомпилированные языки, вы по-прежнему получаете выгоду от ежедневной дисциплины «Не нарушайте сборку». И ежедневный цикл модульного тестирования всего, что у вас есть, - это хорошо.

Мы в муках смотрим на Python 2.6 (который отлично работает для нас) и запускаем наши модульные тесты с опцией -3 , чтобы увидеть, какие устаревшие функции мы используем. Наличие полного набора модульных тестов гарантирует нам, что изменение совместимости с Python 3 не нарушит сборку. И запуск их по ночам означает, что мы должны быть уверены в том, что проводим рефакторинг правильно.

11
ответ дан 4 December 2019 в 10:05
поделиться

Непрерывная интеграция полезна, если у вас есть правильные процессы. TeamCity от JetBrains - отличная отправная точка, если вы хотите познакомиться:

http://www.jetbrains.com/teamcity/index.html

Здесь есть отличная статья, которая напрямую касается Django:

http://www.ajaxline.com/continuous-integration-in-django-project

Надеюсь, это поможет вам начать работу.

3
ответ дан 4 December 2019 в 10:05
поделиться

Созданы веб-приложения в динамических языках может не потребоваться этап «компиляции», но все же может быть несколько этапов «сборки», необходимых для запуска приложения. Сценарии сборки могут устанавливать или обновлять зависимости, выполнять миграцию базы данных, а затем запускать набор тестов, чтобы убедиться, что код является «чистым» по отношению к фактической зарегистрированной версии в репозитории. Или вы можете развернуть копию кода на тестовом сервере, а затем запустить набор интеграционных тестов Selenium для новой версии, чтобы убедиться, что основные функциональные возможности сайта все еще работают.

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

3
ответ дан 4 December 2019 в 10:05
поделиться

Я добился большого успеха, используя Hudson для непрерывной интеграции. Подробная информация об использовании Hudson с Python от Redsolo .

Несколько месяцев назад несколько статей, поддерживающих непрерывное развертывание , вызвали настоящий фурор в Интернете.

1
ответ дан 4 December 2019 в 10:05
поделиться

Если это действительно только вы и еще один разработчик, работающие над этим, ночные сборки, вероятно, не будут дать вам много.

Я бы сказал, что веб-приложение, эквивалентное ночной сборке, будет промежуточными сайтами (которые можно создавать каждую ночь).

Ночные сборки в промежуточную зону начинают приносить реальные дивиденды, когда у вас есть клиенты, менеджеры проектов и Специалисты по контролю качества, которым нужна актуальная, но относительно стабильная версия приложения. Ваши песочницы разработчика (если вы похожи на меня, по крайней мере), вероятно, проводят много времени в непригодном для использования состоянии, поскольку вы ломаете вещи, пытаясь реализовать следующую функцию. Итак, типичная проблема состоит в том, что специалист по контролю качества хочет убедиться, что ошибка исправлена, или PM хочет проверить, правильно ли реализована какая-то запланированная функция, или клиент хочет увидеть, что вы добились прогресса в решении интересующей его проблемы. Если у них есть доступ только к песочнице разработчика, есть большая вероятность, что, когда они дойдут до нее, либо версия песочницы не запущена (поскольку это означает, что ./manage.py runserver находится где-то в терминале), либо она в поломанном состоянии из-за чего-то другого. Это действительно замедляет работу всей команды и тратит много времени.

Похоже, у вас нет промежуточной установки, поскольку вы просто автоматически обновляете рабочую версию. Это может быть хорошо, если вы намного более осторожны и дисциплинированы, чем я (и я думаю, что большинство разработчиков), и никогда не совершаете ничего, что не является полностью пуленепробиваемым. Лично я Лучше убедиться, что моя работа прошла хотя бы беглый контроль качества кем-то, кроме меня, прежде чем она попадет в производство.

Итак, в заключение, установка, в которой я работаю:

  • каждый разработчик запускает свою собственную песочницу локально (так же, как и вы)
  • есть «общая» промежуточная песочница на сервере разработки, которая обновляется каждую ночь из cronjob. Сюда идут менеджеры, клиенты и QA. Им никогда не предоставляется прямой доступ к изолированной программной среде разработчика.
  • Существует автоматическое (хотя и инициированное вручную) развертывание в производственной среде. Разработчик или менеджер проекта могут «подтолкнуть» к производству, когда мы чувствуем, что все было достаточно QA, стабильно и безопасно.

Я бы сказал, что единственный недостаток (помимо немного дополнительных накладных расходов на установку ночных промежуточных сборок) ) заключается в том, что на проверку ошибок требуется день. т.е. QA сообщает об ошибке в программном обеспечении (на основе просмотра ночной сборки за этот день), разработчик исправляет ошибку и фиксирует, затем QA должен дождаться сборки следующего дня, чтобы проверить, действительно ли ошибка исправлена. Обычно это не такая уж большая проблема, так как у всех достаточно дел, которые не влияют на расписание. Однако, когда приближается веха и мы находимся в режиме замороженных функций и только исправления ошибок, мы будем чаще обновлять промежуточный сайт вручную.

2
ответ дан 4 December 2019 в 10:05
поделиться

Вся идея частых сборок (ночных или более частых, как при непрерывной интеграции) состоит в том, чтобы получить немедленную обратную связь, чтобы сократить время между появлением проблемы и ее обнаружением. Таким образом, частое построение полезно только в том случае, если вы можете генерировать некоторую обратную связь посредством компиляции, (в идеале автоматизированного) тестирования, проверки качества и т. Д. Без обратной связи нет реального смысла.

1
ответ дан 4 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: