Pull to refresh
1
0
Виталий Швыдкий @vshvydky

Информационные системы, логистика

Send message

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

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

Условно

queryA getObj { obj { structure, meta } <--- вы

query B getContent(structureId: ...) { content ....}

Разрыв графа не позволяет вытащить половину базы данных, дает возможности фронтам на свободу действий, но в тоже время защищает бек от избыточной выборки с бд. Пример синтетический и может быть не понят вне реального кейса, но возможно кому-то будет это полезным.

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

return users.filter(user=> user.id=== args.id)[0]

серьезно?

Народ! перестаньте вы вестись на такие глупые тесты. Посмотрите код, нода использует один поток, бан вообще пока не умеет в кластер, итог два из четырех сравниваемых серверов работают только на 1 ядре, когда го и раст тестируются с полной нагрузкой с распределением по всем ядрам.

Берем элементарно pm2, запускаем ноду в кластер режиме, проводим повторно тесты и махаем ручкой перформансу голенга. По крайней мере столь ожидаемой всеми от го разницы....

Как бы это грустно для go разработчиков не звучало. Увы это факт....

Меня одного напрягает, что авторы поста критикуют стартап, который Яндекс выкупил как потенциального конкурента? Почему нельзя проявить уважение к людям, которые навелосипедили то, что Яндекс захотел купить? Имея дальше для развития ресурсы, критиковать то что было написано в других условиях,как минимум, проявление непрофессионализма. Ребята, у вас другая точка отсчета. Берете бизнес, который выстрелил, делаете его лучше. В идеале тех кто вам подарил работу в виде этого проекта надо благодарить.

В 2019 рекламировать в мире ноды это? Ещё и не в 1 статье. Читатели, просто почитайте документацию по nest.js, будет на порядок больше пользы.

столкнулся с одним сайтом, не буду упоминать их в суе, вдруг напрягутся. Так вот их сайт не загружается в кошмаре, висит на инициализации, не стал вникать почему, но это стало причиной попробовать хедлесс хром, и что я могу сказать, штука очень даже достойная.
Если сравнивать с кошмаром, конечно там можно прокидывать низкоуровневые запросы к девтулс хрома, но делается это через экшен кошмара + экшен электрона + вызов обсуждаемых функций.
Плюсы, которые я сразу в хеддлес хром для себя отметил, есть возможность активировать подписки эмиттеров сетевых сообщений, будь то post get запросы к бекэнду или активность на поднятых сокетах, использование авным образом всего апи девтулс.
Минусы, все манипуляции с браузером достаточно низкоуровневые, а потому если требуется что-то быстрое типа 3 кликов и забыть, кошмар явно в выигрыше, а вот если нужно что-то «извращенное», есть смысл посмотреть к хедлессу. Не исключено, что кошмар рано или поздно посмотрят на эту возможность и сделают свое высокоуровневое апи под хеддлес. Время покажет.

Поддерживаю. На практике неоднократно видел, как в угодно оптимизации интеграторы набирают абы кого. А статья написана в стиле бойтесь дураки. Странно такую читать от компании пилот, вроде с ними пересекались в Питере, толковые рассказы рассказывали

Да верно. Любой код, к которому нет доступа напрямую.
ошибки в evalute можно так же контролировать
()=>{
try {} catch(error) { return что-то-что-подверглось_анализу}
}
я отношусь к этому как к транспорту, на счет неудобства, оно же под капотом, о нем просто надо знать и не более того. Получить данные со страницы просто.
let text = await nightmare.evaluate((selector)=>{ rerueen document.querySelector(selector).textContent ;}, '#elem-id'); 
console.log(text);

по сути транспорт связывает код в исполняемом файле с кодом на обрабатываемой странице, никаких вермешелей коллбеков не требуется, все читабельно и просто.
Но тут опять же на вкус и цвет фломастеры разные.
если интересует появление конкретного элемента, то достаточно сделать wait(cssSelector) и оно будет ждать его появления до таймаута, заданного при инициализации (дефолт 30 сек), если не дождется выплюнет исключение.
Если селектор есть изначально, и нужно отловить данные, можно сделать .wait(fn[, arg1, arg2,...])
Пример с тестов:
        .wait(function () {
          var text = document.querySelector('a').textContent;
          return (text === 'A');
        });

Получить наличие значения или его отсутствие можно через return !!text
evalute -> evalute_now -> child.call('javascript', source, done) передается код функции как строка, под капотом call эмит в чилд процесс с контролем доставки -> parent.respondTo('javascript'… -> win.webContents.executeJavaScript(src);
эта цепочка работает с очередью и возвращает в прмис данные.
Любой метод типа .click .type .wait можно рассматривать как частный случай работы evaluate, можно посмотреть в lib/actions.js
Отдельно про передачу функции:
var source = template.execute({ src: String(js_fn), args: args});
this.child.call('javascript', source, done);
под капотом модуль minstache, с шаблоном, куда инжектится функция (как текст)
смотри файл lib/javascript.js
даже спорить не буду, я в начале статьи написал про аналоги. Для меня плюсы простота в использовании, использование хромиума, модульность, прозрачность кода.
пример от задачи зависит, самое креативное, что приходилось делать, это инжектирование на страницу до загрузки кода декоратора addEventListener, который логирует все листенеры и оборачивает передаваемую функцию в доп логгер, далее отлов событий через внутренние коммуникации и соответствующие реакции уже на загруженном сайте. Плюсы очевидны, таким образом можно добраться и контролировать код, который активируется через анонимные самозапускающиеся функции и в обычном случае к нему доступа нет.

Information

Rating
Does not participate
Location
Тольятти, Самарская обл., Россия
Date of birth
Registered
Activity