От текущей версии (0.98) из Американских лосей:: Руководство:: MooseX являются строками:
У нас есть большие надежды на будущее
MooseX::Method::Signatures
иMooseX::Declare
. Однако эти модули, в то время как используется регулярно в производстве некоторыми более безумными членами сообщества, являются все еще отмеченной альфой на всякий случай назад, несовместимые изменения должны быть внесены.
Я заметил это для MooseX::Method::Signatures
журнал изменений на сентябрь 2009 упоминает удаление "страшной АЛЬФА-правовой оговорки".
Так, это все еще "альфа"?
Меня все еще считали бы одним из "более безумных" для использования их?
Я бы сказал, что они готовы к производству - я использую их в производстве - но есть несколько вещей, которые следует учитывать:
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 нативно, что возможно на картах.
По данным Sun JavaDoc FAQ, есть несколько вариантов - в основном бесплатные, с одним или двумя коммерческими предложениями. Проверьте его по адресу http://java.sun.com/j2se/javadoc/faq/index.html#print .
-121--2556905-Возникла проблема с вашим сценарием в Firefox. Когда я прокручиваю вниз, сценарий продолжает добавлять поле на страницу, и я никогда не достигаю нижней части страницы. Это происходит потому, что ActionBox по-прежнему является частью элементов страницы. Я опубликовал демонстрацию здесь .
: фиксированную
в определение CSS, но я вижу, что это не сработает для вас вверху
. ОБНОВЛЕНО:
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.
Я думаю, что это вопрос различных точек зрения - rafl является одним из вышеупомянутых "более безумных членов сообщества", в то время как Rolsky более консервативен. Вам решать, с кем вы согласны, и на самом деле я думаю, что самая важная переменная - это ваш собственный код.
MooseX::Declare - хороший код. Он не взорвет случайно вашу машину, он не ужасен по производительности, и он предлагает много интересных вещей, уменьшая количество шаблонов, которые вам придется писать. Но это может измениться в будущем, что заставит ваш код отказываться компилироваться до тех пор, пока он не будет обновлен; это может заставить ваш редактор и другие инструменты разработки запутаться, увидев синтаксис, который он не может разобрать; это может разозлить ваших коллег, заставив их изучать новый модуль для работы с вашим кодом, или это может разозлить вашего начальника, заставив любого будущего сопровождающего изучать новый модуль для работы с вашим кодом. Что из этого относится к вам, и в какой степени? Надеюсь, вы знаете это лучше меня.
Есть люди, которые считают, что зрелость и стабильность MooseX :: Delcare
, Devel :: Declare
, на котором он основан, или даже сам Moose
еще не готов к «прайм-тайм». Я также знаю две крупные компании с миллионы посетителей в месяц, которые имеют MooseX :: Declare
в своей производственной среде. Я лично доволен предоставленным мне стеком Moose
и пока не вижу необходимости приносить в MooseX :: Declare
. Я знаю людей, чье мнение я глубоко уважаю, которые отказываются писать новый код без декларативного сахара из MooseX :: Declare
.
Все это делается для того, чтобы Скажем, решение о том, готово ли что-то к производству или нет, в значительной степени зависит от вашей производственной среды, ваших потребностей в разработке и склонности к риску. d решение о том, насколько хорошо тот или иной инструмент соответствует этому профилю.