Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Господи, успокойтесь. node.js лишь модный фреймворк. Не технология, не язык, а просто фреймворк.Это именно технология, использующая JavaScript v8 + libioe + libev.
Он на очень ранней стадии, есть проблемы у самого V8 и node.js соответственно их перенимает.Предельно голословно. Не сомневаюсь, что в v8 есть определенные проблемы, но разве их нет в других интерпретаторах скриптовых языков? Даже в gcc вон нашли «баг года».
Он безбожно течет, стоит только написать что-то большее чем обычный чат.Опять слова, я думаю вы прочитали отзыв Вконтакта о Node.js и фраза «а также течет память» перевернула ваше представление о Node.js. Там нет конкретных причин течи, кто знает мб все дело в руках. Например SAX XML парсер + модуль xml2json безбожно «течет» на 250 rps, как следствие частый gc (50-60 Мб каждые 5-10 секунд, фриз 1 сек), который приводит к лагам(1кб каждая XMLка). Тут проблема не в Node.js и даже не в SAX XML, а в xml2json. Исправив проблему с xml2json убрали течь итог: 1000 rps, gc раз в несколько минут (1мб), фриз пару тысячных.
Есть технологии более совершеннее и мощнее того же node.js vs V8. Есть Erlang, есть Java NIO & Deft, который быстрее node.js и V8.На вкус и цвет. Не стоит бросаться словами насчет скорости работы и разработки.
getSomeData(function() {
getMoreData(function() {
getEvenMoreData(function() {
// ...
});
});
})
list<int> v(10); for_each(v.begin(), v.end(), _1 = 1); vector<int*> vp(10); transform(v.begin(), v.end(), vp.begin(), &_1); int foo(int); for_each(v.begin(), v.end(), _1 = bind(foo, _1)); sort(vp.begin(), vp.end(), *_1 > *_2);
$arr->items[0]
В php есть simpleXML
$xml->items->item возвращает нам массив элементов item, то это достаточно костыльно — зачем тогда нужен items? и тогда, чтобы пройти через все элементы необходим такой код:// json
foreach ($arr->items as $item):
// xml:
foreach($arr->items->item as $item):
но пока что мне видится один плюс XML — его легче изучать людям, даже далеким от программирования.
items: [
'first',
'second',
'third'
]
// vs
<items>
<item>first</item>
<item>second</item>
<item>third</item>
</items>
По моему опыту общения с разными людьми разных профессий и уровня познаний, быстрее у них получалось разобраться именно с XML, может еще и потому, что у людей уже были изначальные знания.
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
<person>
<firstName>Иван</firstName>
<lastName>Иванов</lastName>
<address>
<streetAddress>Московское ш., 101, кв.101</streetAddress>
<city>Ленинград</city>
<postalCode>101101</postalCode>
</address>
<phoneNumbers>
<phoneNumber>812 123-1234</phoneNumber>
<phoneNumber>916 123-4567</phoneNumber>
</phoneNumbers>
</person>
person:
firstName: Иван
lastName: Иванов
address:
streetAddress: Московское ш., 101, кв.101
city: Ленинград
postalCode: 101101
phoneNumbers:
- 812 123-1234
- 916 123-4567
language php js interprer zend* V8 host env apache node
phpDaemon — asynchronous server-side framework of network applications implemented in PHP using famous libevent which makes possible to handle hundreds and thousands of simultaneous connections.
Its master process spawns a bunch of worker-processes (workers) that run your applications. Each worker doesn't block (sleep) at all, and has event-driven architecture.
Designed for highload.
…
Out-of-Box
Network servers:
HTTP server (supports multipart, uploads, etc)
WebSocket server (supports latest protocol specification)
FastCGI server
FlashPolicy server — cross-domain policy at port 843
Socks server.
LockServer.
…
Заходим на nodejs.org и во первых строках сайта видим:Т.е. вы отождествляете пример сервера, написанный на Node и саму Node?
An example of a web server written in Node
Т.е. для node.js не используется веб-сервер!Клево! А кто картинки отдавать будет? Ну, к примеру вы напишете сервер с помошью той же Node, который картинки отдает. Тоже будете говорить, что он равен Node?
Архитектура LAMP мертва потому что мало кому сейчас хочется отправлять тонны HTML-разметки в ответ на каждое движение пользователя. Вместо этого лучше обновлять небольшие фрагменты DOM с помощью AJAX.
Node.js и эра JavaScript