Возможность выбрать базу данных. MongoDB знаю и люблю, но возможно от нее придется отказаться в угоду SQL.
* Наличие хотя-бы какой-никакой админки.
* Возможность разбивать пользователей по ролям.
* Возможность генерировать REST API карты, для удобства и наглядности.
* Уже встроенные решения для пользовательских сессий, XSS (и смежных) защит, авторизации.
* Открытость для расширений и пользовательских плагинов.
<input
type="password"
name="password"
readonly
onfocus="this.removeAttribute('readonly')">
Ох ребятушки, расскажу я Вам сказочку про кернел_таск! Когда процессор нашего многоувашаемого макинтоша безмерно разогрет и перегружен, замечательная система MacOS X должна как-то регулировать весь этот беспредел: не давать новым процессам залезть на бедный процессор, чтобы он не сгорел к едрене фене.
А как это сделать? Неужели блочить все новые процессы? А если они системные? Ну тогда надо играть с приоритетом выполнения процесса, но опять же: кому повышать приоритет, а кому понижать? Ведь изначально все процессы УЖЕ запущены с рационально-выставленным приоритетом. Придумывать сложную и прожорливую программу интеллектуального регулирования приоритетов? Вряд ли она сможет эффективно выполняться на перегруженном проце
Так вот без малого гениальные программисты Apple (или BSD?) придумали кернел_таск — процесс-пустышку с высоким приоритетом. По сути, кернел таск — это то, что в винде называется «бездействие системы». Когда системе тяжело и горячо, кернел_таск занимает все ресурсы, но занимать-то занимает, а вот использовать — не использует, даёт охладиться и отдохнуть железу. И ведь за счёт максимального приоритета в критической ситуации ему это прекрасно удаётся! Самое главное, что приоритеты других процессов ни в коем случае не нарушаются, просто кернел_таск появляется с приоритетом «над ними». Выполнив свою работу наш охлаждатель сдувается и бежит вниз списка системных процессов, но стоит только наступить ночи… тфу-у-у-у-у…. не оттуда… Но стоит только системе опять начинать быть перегруженной, наш помощник тут как тут))
Проверено на Эирах обоих поколений, и на C2D 1.8 с HDD и Intel GMA, и на C2D 2.13 с SSD и Nvidia 9400, кернел_таск везде проявляется при перегреве и флэше. Особенно это было заметно в жаркие московские денёчки лета 2010!
var async = require('async');
async.waterfall([
function(callback){
setTimeout(function() {
console.log('f1 done');
callback(null, 'data from f1');
}, 100);
},
function(data, callback){
// работа с data
// или расширение цепочки через функцию f3, которая по окончании работы вызовет callback
// f3(callback);
console.log('f2 done');
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
if (err) {
// единое место для отлова ошибок
}
console.log(result);
});