Как мне использовать Comparator для определения пользовательского порядка сортировки?

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

у Нас есть три вещи, которые нам нужно выполнение для установки нашего веб-сайта:

  1. модуль Perl А, сделанный с помощью Module::Starter, содержа Config модуль, который содержит по всему сайту параметры конфигурации. На установке, этот модуль (использующий MakeMaker PREREQ_PM, чтобы проверить, что все модули мы требуем, были уже установлены). Могут быть установлены любые модули, которые не имеют потребности, которая будет установлена перед этим модулем.
  2. Несколько файлов SQL, которые должны быть выполнены для установки базы данных.
  3. файлы CGI Perl, которые составляют веб-сайт. Пока на Apache указывают на них, веб-сайт "просто работает". Это включает общие модули кода, используемые всеми файлами Perl.

Развертывание состоит во мне вытягивающий от общих ответвлений Мерзавца и упаковывающий версию. Мы можем тогда передать это для тестирования, или локально или на экземпляре Amazon EC2. Как только нас хорошо выпустить, мы или установить его по последней версии, или переместить базу данных в экземпляр тестирования и сделать что новый экземпляр.

Сравнение этого к Вашим критериям:

  1. Управление библиотек: Несколько. Мы используем модули CPAN вполне экстенсивно. Для попытки новой версии мы обновляем нашу собственную версию модуля прежде, чем сделать то обновление на рабочем сервере. Мы вручную ведем список, но так как наша кодовая база является довольно маленькой, не трудно выяснить, какие модули используются (через grep луг для строк, запускающихся с use, например).
  2. интеграция Make-файла/Сборки: Да. Любой связанный с make-файлом материал сделан нашим EU:: установка MM. У нас нет глобальных тестов, но так как наш весь набор тестов недавно закончился в одной папке, надо надеяться, у нас скоро будет что-то, на чем можно работать prove непосредственно.
  3. дружественное Управление версиями: Да. Наш весь исходный код содержится в единственной папке без слишком большого количества дублирования.
  4. Кросс-платформенный: Да. У нас есть много странного материала, оказывающегося в MakeMaker позволить нам делать это, но поскольку запуск, имея межплатформенный код дает нам ценную гибкость. Мы пытаемся использовать базовые модули и инструменты Perl и Чистые модули Perl от CPAN, как можно больше.
  5. Единственная установка Perl: Да. Мы можем обработать Perl, являющийся где угодно, и установленный при любых настройках, пока все собственные инструменты модуля Perl могут работать - было много усилий, приложенных к получению CPAN, EU::MM и другие, работающие хорошо через все системы, и это кажется позором для траты его.
  6. Легкий запуск: Едва ли. Эта система развита (т.е.: не был разумно разработан) от единственной папки всех исходных файлов и текстового файла со списком модулей, которые должны быть установлены. В то время как формализация тестирующий на установленные модули является огромным улучшением, она все еще берет нам что-то как день для установки этого, главным образом потраченная установка наших необходимых как условие модулей (не, всех их легко установить в Windows). Я надеюсь использовать Perl сообщество Win32 , чтобы попытаться получить проблемы с проблематичными сглаженными модулями CPAN.

, Обратите внимание, это действительно , простой веб-сайт, никакой XS, усложнил веб-платформу или любой такой. Мы также только поддерживали эту установку приблизительно через две версии, таким образом, у нас нет достаточного опыта относительно того, как это собирается работать, поскольку код становится более сложным, и наши платформы развертывания становятся более варьировавшимися. Я был бы очень признателен за любые предложения или комментирую нашу систему.

82
задан Michael 2 November 2018 в 17:07
поделиться

1 ответ

Я сделаю что-то вроде этого:

List<String> order = List.of("Red", "Green", "Magenta", "Silver");

Comparator.comparing(Car::getColor(), Comparator.comparingInt(c -> order.indexOf(c)))

Все кредиты переходят к @Sean Patrick Floyd :) [112 лет]

0
ответ дан 24 November 2019 в 09:09
поделиться
Другие вопросы по тегам:

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