JavaScript

Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

JavaScript

Post by Сабина »

В юмор рука не поднялась, уж очень тема серьезная :)

http://cube-drone.com/comics/c/relentless-persistence" onclick="window.open(this.href);return false;
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: JavaScript

Post by valchkou »

sencha extjs вполне самодостаточная библиотека.
sencha CMD, очень handy тулза, все это сжимает под prod, компилит sass, запускает ...
рекомендую тем кто не хочет мудохаться с зоопарком.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: JavaScript

Post by helg »

Именно уродство помогло JS выжить. Когда MS был на коне с IE и двигал свои ActiveX, убивая все конкурирующие технологии, он не мог и помыслить, что такое уродство может делать хоть что-то серьёзное.
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: JavaScript

Post by Medium-rare »

Есть такое расширение фреймворка Qt: QML, в нём JavaScript используется для работы с UI на базе QML. Всё просто летает, там свой Qt Script Engine. И нет проблем поговорить между C++ и JavaScript. Поскольку архитектура открытая, и изначально всё взаимодействие было продумано. Ну и, собсно JavaScript есть дополнение к деклративному языку QML, события отрабатывать, и т.п.
... and even then it's rare that you'll be going there...
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

Ох и прикол у нас был сегодня :). Молодая одаренная молодежь переписала data poller с Джавы на node ( JavaScript) , задизайнили там всякие хитрости с SQS . Один процесс опрашивает remote endpoint и пишет мессадж в кью, другой из кью вычитывает и пишет в базу.
Я чем дольше на это дело смотрю, тем больше не понимаю зачем там этот лес-огород. Я только за something fancy and scalable, но только если и правда есть необходимость. А тут данных кот наплакал, надо послать порядка пары тысяч post requests и записать данные из риспонса в базу. Частота запуска - каждые 10 минут.
Спрашиваю зачем мол переписывали, в чем была проблема со старым кодом? А вот де перестали успевать укладываться в 10 минут и вообще не scalable solution. Теперь все занимает от силы пять минут и если не успеем у нас есть queue.
Я таки не выдержала и написала код на Джаве который эти же данные обрабатывает , только не из базы вычитывает параметры для реквестов, а из файла . Один класс с четырьмя методами. Запускаю с thread count =100, за все про все занимает 8 секунд ! :)
Переписали называется на новомодный Джаваскрипт
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: JavaScript

Post by Medium-rare »

:good:
... and even then it's rare that you'll be going there...
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

Medium-rare wrote::good:
Никого мой РОС не заинтересовал :(
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

Был сегодня 1-он-1 с новым начальником, он стал распрашивать как мне нравится на новой работе, я возьми и ляпни что незаслуженно они совсем уж забили на Джаву и перешли полностью на Node :).
Завтра будет финал разговора, где мне надо будет продемонстрировать на рабочем коде что то что сейчас делается на Ноде за 5+ минут можно делать на Джаве за 30 секунд.
Предлагаю заинтересованным лицам угадать засчет чего Джава быстрее? Могу даже с призом главному угадавшему :)
https://www.youtube.com/watch?v=wOwblaKmyVw
DropAndDrag
Уже с Приветом
Posts: 6019
Joined: 11 Mar 2011 05:36

Re: JavaScript

Post by DropAndDrag »

если работали толковые ребята, а еще и система большая и сложная, то замучаешься выигрывать по скорости написания ...
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: JavaScript

Post by helg »

Сабина wrote:Предлагаю заинтересованным лицам угадать засчет чего Джава быстрее?
Так Вы же и есть главная угадавшая - выше написали про одну нитку против каната.
ekriv
Уже с Приветом
Posts: 5424
Joined: 19 Jan 2004 23:12
Location: Florida

Re: JavaScript

Post by ekriv »

helg wrote:
Сабина wrote:Предлагаю заинтересованным лицам угадать засчет чего Джава быстрее?
Так Вы же и есть главная угадавшая - выше написали про одну нитку против каната.
Там еще упоминалось чтение из файла вместо БД.
User avatar
fruit6
Уже с Приветом
Posts: 4207
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: JavaScript

Post by fruit6 »

Похоже на борьбу за рабочие места. Грязные трюки идут в ход.
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: JavaScript

Post by valchkou »

Сабина wrote:
Предлагаю заинтересованным лицам угадать засчет чего Джава быстрее? Могу даже с призом главному угадавшему :)
так они перепишут логику на ноде, как на яве и будут те же 30 sec.
затык я так понял не в технологии, а в дизайне.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: JavaScript

Post by helg »

valchkou wrote:так они перепишут логику на ноде, как на яве и будут те же 30 sec.
И запускать 100 node-процессов впараллель?
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: JavaScript

Post by valchkou »

helg wrote:
valchkou wrote:так они перепишут логику на ноде, как на яве и будут те же 30 sec.
И запускать 100 node-процессов впараллель?
я в ноде не спец, а там что нельзя запустить несколько потоков, в пределах процесса?
я недавно руби скрипт с похожими проблеммами на яву перегнал.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: JavaScript

Post by helg »

valchkou wrote:я в ноде не спец, а там что нельзя запустить несколько потоков, в пределах процесса?
я недавно руби скрипт с похожими проблеммами на яву перегнал.
Либо нахарлать костылей сторонних библиотек, либо переписать всё "in JavaScript way": типа пустить 100 функций по таймеру, чтобы пока одни ждут тормозного сервера, базы или чего ещё, другие пытаются таки что-то сделать. Но последний подход для операций сложнее "приветмир" - это коллбэковая нечитаемая лапша стиля Windows 1.0.
User avatar
fruit6
Уже с Приветом
Posts: 4207
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: JavaScript

Post by fruit6 »

Я думаю стандартное решение это запустить сто node.JS instances хоть в контейнерах или даже на одном ноде параллельно. Aka horizontal scalability
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: JavaScript

Post by valchkou »

теперь мне понятно почему nodejs не станет mainstream, а так и останется в своей узкой нише.
как раз недавно обсуждали почему ноде такой замечательный и что вот вот он всех поборет
viewtopic.php?f=2&t=193854&p=6122185#p6122185" onclick="window.open(this.href);return false;
тема многопоточности была затронута, но не раскрыта.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

valchkou wrote: так они перепишут логику на ноде, как на яве и будут те же 30 sec.
затык я так понял не в технологии, а в дизайне.
Почему то на ноде у парня не получается делать больше 30 запросов на remote endpoint одновременно. Говорит валится VPN причем с его стороны. У меня через executor service pool хоть двести тредов запускай - все работает.

Второй момент - я не знаю как он делает inserts в базу, у меня batch-ем тоже все моментально выходит.

Дизайн - да, конечно отличается - но там эта queue совсем не нужна.
Last edited by Сабина on 30 Jul 2015 02:42, edited 1 time in total.
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

fruit6 wrote:Я думаю стандартное решение это запустить сто node.JS instances хоть в контейнерах или даже на одном ноде параллельно. Aka horizontal scalability
Вот именно ! Не в queue посылать все мессаджи для дальнейшего засовывания в одну и ту же базу, а сделать несколько региональных микросервисов, которые буду поставлять только timeseries данные для regional customers

Сто нодов не надо, можно пятком обойтись, по одному на микросервис.
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

valchkou wrote:теперь мне понятно почему nodejs не станет mainstream, а так и останется в своей узкой нише.
как раз недавно обсуждали почему ноде такой замечательный и что вот вот он всех поборет
viewtopic.php?f=2&t=193854&p=6122185#p6122185" onclick="window.open(this.href);return false;
тема многопоточности была затронута, но не раскрыта.

Как минимум для интенсивных backend batch jobs лучше Джава. Рест веб сервис я по прежнему на ноде буду писать
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

Геморрой номер два с нодом - скачка большого файла с сервера.
Там на лету пишется PDF doc в writable stream локальной файловой системы. И как только в документе страниц 50+ тормозит все что ох и ах. Причем только по сети, если все стоит локально - то терпимая скорость.
Стала копаться - оказывается нод, как good citizen, который ничего не блокирует и бережет все возможные ресурсы сам регулирует как этот стрим передавать через pipe.
делаем мы это PDFmake-ом, как тут описано и как бы вариантов никаких
https://github.com/bpampuch/pdfmake/issues/19" onclick="window.open(this.href);return false;

Code: Select all

// pdfDoc is a stream so you can pipe it to the file system
var fs = require('fs');
pdfDoc.pipe(fs.createWriteStream('pdfs/basics.pdf'));
pdfDoc.end();
Нашла только каую то опцию буфер попробовать увеличить, но и то похоже на хак и непонятно что оно потом повлечет за собой
http://stackoverflow.com/questions/2400 ... -very-slow" onclick="window.open(this.href);return false;

Code: Select all

var fs = require('fs');
var path = require('path');
var from = path.normalize(process.argv[2]);
var to = path.normalize(process.argv[3]);

var readOpts = {highWaterMark: Math.pow(2,16)};
var writeOpts = {highWaterMark: Math.pow(2,16)};

var source = fs.createReadStream(from, readOpts);
var destiny = fs.createWriteStream(to, writeOpts)

source.pipe(destiny);
На Play мы подобное делали через параллельный upload of file chunks through websockets, а с нодом непонятно что еще можно попробовать. Там и библиотек то на так много надежных которые работают с PDF
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JavaScript

Post by Сабина »

Я как в воду глядела как мне "повезет". Молодое дарование после провала релиза свалило в стартап и это "нодовое" счастье передали мне для поддержки. Слов нет одни маты
https://www.youtube.com/watch?v=wOwblaKmyVw

Return to “Вопросы и новости IT”