MooseX:: Объявите и MooseX:: Метод:: готовое производство Подписей?

От текущей версии (0.98) из Американских лосей:: Руководство:: MooseX являются строками:

У нас есть большие надежды на будущее MooseX::Method::Signatures и MooseX::Declare. Однако эти модули, в то время как используется регулярно в производстве некоторыми более безумными членами сообщества, являются все еще отмеченной альфой на всякий случай назад, несовместимые изменения должны быть внесены.

Я заметил это для MooseX::Method::Signatures журнал изменений на сентябрь 2009 упоминает удаление "страшной АЛЬФА-правовой оговорки".
Так, это все еще "альфа"?
Меня все еще считали бы одним из "более безумных" для использования их?

12
задан Brad Gilbert 24 February 2010 в 16:40
поделиться

4 ответа

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

Производительность

MooseX::Declare и зависимости делают почти всю свою магию во время компиляции. В зависимости от размера вашей программы, вы можете обнаружить от половины секунды до нескольких секунд дополнительных накладных расходов на инициализацию. Если это проблема, не используйте MooseX::Declare.

Во время выполнения основные накладные расходы приходятся на проверку типов и аргументов, которую вы должны (в идеале) делать в любом случае. Тем не менее, ограничения типов Moose имеют некоторые накладные расходы, а именно коэрцитивность и более сложные ограничения (MooseX::Types::Structured-style). Не используйте их, если производительность является проблемой.

Стабильность

Внешний синтаксис MooseX::Declare и MooseX::Method::Signature теперь стабилен. Но важно знать, что внутренние компоненты подвержены экстремальным изменениям. (к счастью, изменения к лучшему)

Чтобы дать вам представление, сама сигнатура собирается с помощью большого блока кода на языке C, украденного из токенизатора Perl (toke.c). В некоторых ситуациях он может сломаться, поскольку на самом деле он ничего не разбирает. Бит внутри скобок разбирается с помощью PPI, который предназначен для чистого Perl, но полученное дерево PPI затем взламывается, чтобы получить что-то полезное. Devel::Declare сам является хаком - после того, как он видит определенные ключевые слова (например, 'role', 'class', 'method'), модуль, использующий Devel::Declare, должен переписать исходный код вручную, без взаимодействия с настоящим парсером Perl.

Угловые случаи могут привести к сбою Perl. Или плохо переписать исходный код, так что вы получите синтаксические ошибки, но не будете знать, что их вызывает без -MO::Deparse. Если вы случайно испортите синтаксис MooseX::Declare, нет никакой гарантии, что модуль обнаружит это и выдаст вам разумную ошибку. Сообщение ALPHA, возможно, исчезло, но модуль все еще делает темные и страшные вещи внутри, и вы должны быть готовы к этому.

UPDATE

MooseX::Declare практически не обновлялся, и вы можете посмотреть на альтернативы, такие как Moops. Лично я решил придерживаться чистого Moose, пока сам Perl не начнет поддерживать синтаксис class/method/has нативно, что возможно на картах.

12
ответ дан 2 December 2019 в 04:16
поделиться

По данным Sun JavaDoc FAQ, есть несколько вариантов - в основном бесплатные, с одним или двумя коммерческими предложениями. Проверьте его по адресу http://java.sun.com/j2se/javadoc/faq/index.html#print .

-121--2556905-

Возникла проблема с вашим сценарием в Firefox. Когда я прокручиваю вниз, сценарий продолжает добавлять поле на страницу, и я никогда не достигаю нижней части страницы. Это происходит потому, что ActionBox по-прежнему является частью элементов страницы. Я опубликовал демонстрацию здесь .

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

ОБНОВЛЕНО:

CSS

#ActionBox {
 position: relative;
 float: right;
}

Сценарий

var alert_top = 0;
var alert_margin_top = 0;

$(function() {
  alert_top = $("#ActionBox").offset().top;
  alert_margin_top = parseInt($("#ActionBox").css("margin-top"),10);

  $(window).scroll(function () {
    var scroll_top = $(window).scrollTop();
    if (scroll_top > alert_top) {
      $("#ActionBox").css("margin-top", ((scroll_top-alert_top)+(alert_margin_top*2)) + "px");
      console.log("Setting margin-top to " + $("#ActionBox").css("margin-top"));
    } else {
      $("#ActionBox").css("margin-top", alert_margin_top+"px");
    };
  });
});

Также важно добавить базу (10 в данном случае) в parseInt () , например,

parseInt($("#ActionBox").css("top"),10);
-121--3499326-

Это зависит от того, что вы имеете в виду под «производством готов». Я не буду зависеть от них, пока их скорость немного не замедлится. Мне нравится, что мои производственные материалы не нуждаются в частом уходе от внешних изменений кода, корректировок API и так далее. Это не что-то особенное для Лося, а любой молодой проект.

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

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

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

MooseX::Declare - хороший код. Он не взорвет случайно вашу машину, он не ужасен по производительности, и он предлагает много интересных вещей, уменьшая количество шаблонов, которые вам придется писать. Но это может измениться в будущем, что заставит ваш код отказываться компилироваться до тех пор, пока он не будет обновлен; это может заставить ваш редактор и другие инструменты разработки запутаться, увидев синтаксис, который он не может разобрать; это может разозлить ваших коллег, заставив их изучать новый модуль для работы с вашим кодом, или это может разозлить вашего начальника, заставив любого будущего сопровождающего изучать новый модуль для работы с вашим кодом. Что из этого относится к вам, и в какой степени? Надеюсь, вы знаете это лучше меня.

7
ответ дан 2 December 2019 в 04:16
поделиться

Есть люди, которые считают, что зрелость и стабильность MooseX :: Delcare , Devel :: Declare , на котором он основан, или даже сам Moose еще не готов к «прайм-тайм». Я также знаю две крупные компании с миллионы посетителей в месяц, которые имеют MooseX :: Declare в своей производственной среде. Я лично доволен предоставленным мне стеком Moose и пока не вижу необходимости приносить в MooseX :: Declare . Я знаю людей, чье мнение я глубоко уважаю, которые отказываются писать новый код без декларативного сахара из MooseX :: Declare .

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

5
ответ дан 2 December 2019 в 04:16
поделиться
Другие вопросы по тегам:

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