Казуар (программное обеспечение)
Cassowary — это набор дополнительных инструментов для решения ограничений , который эффективно решает системы линейных равенств и неравенств . Ограничениями могут быть как требования, так и предпочтения. Клиентский код определяет ограничения, которые необходимо поддерживать, а решатель обновляет ограниченные переменные, чтобы они имели значения, удовлетворяющие ограничениям.
Cassowary был разработан Грегом Дж. Бадросом , Аланом Борнингом и Питером Дж. Стаки и оптимизирован для приложений с пользовательским интерфейсом. [1] Бадрос использовал Cassowary среди других для реализации каскадных таблиц стилей ограничений (CCSS), расширения каскадных таблиц стилей (CSS). CCSS добавляет поддержку ограничений макета . Это позволяет дизайнерам описывать макет веб-страницы более гибко . Cassowary используется для решения этих ограничений и расчета окончательной планировки.
Оригинальный дистрибутив, [2] не поддерживается с 2000 года, включает реализации Smalltalk , C++ и Java , а также привязки для GNU Guile , Python и STk. существуют сторонние реализации Для JavaScript , [3] Дарт , [4] Писк , [5] Питон , [6] [7] Framework .NET , [8] и Руст . [9]
Приложения
[ редактировать ]- По состоянию на сентябрь 2014 года GSS, язык верстки и механизм верстки для Интернета, разрабатывается The Grid. [10] Это современное расширение CCSS. [11]
- Layx — язык верстки для Интернета, разработанный с учетом простоты использования. [12]
- Scwm — оконный менеджер ограничений схемы.
- С 2011 года Cassowary используется в качестве алгоритма в механизме компоновки для Mac OS X (Lion и более поздних версий) и iOS (6 и более поздних версий). [ нужна ссылка ]
- Механизм компоновки Enaml построен на основе оптимизатора линейных ограничений Cassowary. [13] [14] [15] [16]
Ссылки
[ редактировать ]- ^ Алгоритм решения ограничений линейной арифметики Казуара , авторы: Грег Дж. Бадрос , Алан Борнинг и Питер Дж. Стаки
- ^ «Инструментарий для решения казуарных ограничений» . Университет Вашингтона.
- ^ cassowary.js на GitHub
- ^ google/cassowary.dart , Google, 12 августа 2020 г. , получено 8 декабря 2020 г.
- ^ Казуар
- ^ казуар на GitHub
- ^ киви на GitHub
- ^ Вермюлен, Джо. «Казуар.Нет» . jovermeulen.com . Проверено 10 декабря 2020 г.
- ^ казуар-rs на GitHub
- ^ «История разработки таблиц стилей сетки» . Гитхаб .
- ^ «О ЦССС» . Архивировано из оригинала 11 сентября 2014 г. Проверено 22 сентября 2014 г.
- ^ «Домашняя страница сайта Layx» .
- ^ «Casuarius предоставляет привязки Python к реализации алгоритма Cassowary на C++» . Архивировано из оригинала 14 августа 2017 г. Проверено 19 сентября 2017 г.
- ^ казуариус на GitHub
- ^ Киви , замена Казуария/Казуара. Новый решатель устраняет это узкое место. Он по-прежнему использует тот же алгоритм Cassowary, но это реализация алгоритма с нуля, основанная на статье Cassowary, а не на существующем исходном коде Cassowary. Хотя алгоритм Cassowary хорош, существующая реализация на C++ имеет множество недостатков. Новый решатель работает в 12–500 раз быстрее в зависимости от задачи (обычно в 40 раз) и использует примерно в 5 раз меньше памяти. И, как обычно, я решил написать привязки Python вручную на C++, а не использовать Cython. Полученный код стал быстрее, и теперь у нас на одну внешнюю зависимость меньше.
- ^ киви на GitHub