Anonymous
Не, понятно что это метод борьбы с говном на более низком уровне, которое по каким-то причинам не получается просто решить
Anonymous
Норм
Vladimir
У нас (в aviasales.ru) на Elixir сейчас крутятся в проде
* злой агрегатор статистики, который жуёт все результаты поисков юзеров из rabbitmq и складывает разную стату в базу (он заменил собой ~30 воркер процессов Ruby, которые не справлялись с нагрузкой, и не выжирает и 3 ядер)
* генератор статики на Phoenix, с кастомной оберткой и кастомными модельками
* сервис апишек для кучи виджетов по найденным ценам, ходит в параллель к различным источникам, мержит и отдаёт json
* бот подписок на дешевые билеты для slack и viber
Кейсы разные и везде Elixir показал себя хорошо или очень хорошо :) деплой приделали сами, отправили пару PR в пару библиотек, но в общем все что нужно было, уже стабильно работает.
Я полагаю если бы они сделали на джаве или го, результат юбыл бы тот же
Vladimir
Когда заменяешь руби на что-то, то всегда хорошо
Anonymous
@DenisIzmaylov не ясно ни при чом тут эликсир, ни как эти проблемы связаны с эликсиром
Anonymous
Vladimir
Да все понятно - просто поигрались, вроде работает, стали использовать
Vladimir
Как известно, рубисты не могут писать ни на чем, что хотя бы отдаленно не напоминало руби
Anonymous
Руби аутисты ищут выход в эликсире
Vladimir
Потому вот сделали кофескрипт, потом сделали эликсир
Anonymous
Я не обсираю руби если что
Vladimir
Да можно и обсирать, почему нет
Anonymous
Vint
Да чо ж вы такие снобы то. Прям как из Джава-песочницы говном кидаетесь)
Roman
снобы, ага
Anonymous
Нет, ну у них есть рельсы. Я не зная руби на рельсах не один проект сделал
Anonymous
Не знаю что щас с теми компаниями
Vladimir
Ну просто люди явно руководствуются не прагматизмом в выборе технологий, почему бы не посмеяться
Anonymous
Джава супер
Vint
У всех есть своя любимая погремушка. Из пенопласта или бетона - его выбор)
Anonymous
JVM FTW
Vladimir
Люди вот на го переходят там с того же руби, и радуются - мол, статическая типизация
Anonymous
Джава не оч ладно, ок
Vladimir
Естественно, лучше такая, чем никакая
Anonymous
Anonymous
Тру стори. И с питона ссаного
Vint
Всё супер, если руки и голова. И строго наоборот тоже. Поэтому весь трёп на гигабайты - понятно что.
Anonymous
Ничего не имею против ссаного питона бтв
Aleksei
Руби на столько медленный что даже умирает уже третий год
Vladimir
Кстати, одна из мыслей, почему в го такая жалкая система типов - все в угоду быстрой компиляции
Дима
Хотя возможно у меня просто не очень репрезентабельная выборка
Anonymous
Кхм. Это вообще ноджс чат
Anonymous
Ну ок
Anonymous
А. Забыл. Да
Aleksei
Это же чат гоферов
Pavel
Щас бы крестовую отвертку с плоской сравнить
Vint
Да, PHP точно тлен. Или всё-таки phpисты?
Vint
Vint
Всё, надоело сайтики ломать, пойду пожру лучше.
S
А подскажите какой нибудь норм клиент для scp/sftp?
Максим
Под винду или для ноды?
Максим
Или другая какая ось?
S
для ноды
S
ubuntu, если это имеет значение
Alexey
filezilla
S
группа про ноду вроде)
Максим
Alex ZeroDub
это про тарантул опять ?)
Alex ZeroDub
Ох какой я баг словил. 2 дня искал
Alex ZeroDub
А все из-за того что променял bluebird.coroutine на старую co
Alex ZeroDub
просто говно какое то и слов нет
Alex ZeroDub
Допустим есть некая функция checkParameters которая возвращает не promise, а мы про это забыли
Alex ZeroDub
Пишем такие на генераторах функцию
Alex ZeroDub
let testMe = co(function* () {
let dat = yield checkParameters(30);
return 200;
});
Alex ZeroDub
и если это bluebird.coroutine
Alex ZeroDub
то получим Unhandled rejection TypeError: A value 130 was yielded that could not be treated as a promise
Alex ZeroDub
все круто
Alex ZeroDub
а если это co то просто ничего не получим. никакой ошибки
Vint
Это в цепочке промисов?
Alex ZeroDub
да у меня там была большая цепочка
Alex ZeroDub
и вела себя неадекватно)
Vint
А, ну, это "логично". Ты вернул что-то, что не промис, оно и схавалось. bb.co ставит свои флаги и чекает это дело.
Vint
Ну т.е. я думаю, что через флаги, а там надо смотреть. Не пользовал корутины так.
Alex ZeroDub
для меня это было неочевидное поведение
Alex ZeroDub
что co это просто проглотил и не выкинул никакого результата
Alex ZeroDub
от bluebird юзали почти только одни корутины. хотели перейти на co т.к. она типа меньше)
Vint
Это не co проглотил, а bb.
hamper 𓅝
а await в таких случаях как себя ведет?
Vlad
Vlad
вангую, что если трай-кетчить то всё будетнорм
Vint
Ну да, магия где-то здесь
https://github.com/petkaantonov/bluebird/blob/master/src/generators.js#L153-L169
tryConvertToPromise чекает bb-флаги, которые выставляются при вызове bb.coroutine
hamper 𓅝
await игнорирует то что там не промис и возвратит undefined, проверил только что
hamper 𓅝
а не
hamper 𓅝
туплю, таки вернул циферку
hamper 𓅝
> (async () => await 3)().then(x => console.log(x))
Promise { <pending> }
> 3
hamper 𓅝
а co ругается
hamper 𓅝
> co(function*(){ return yield 3 }).then(x => console.log(x))
Promise { <pending> }
> (node:24759) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: You may only yield a function, promise, generator, array, or object, but the following object was passed: "3"
(node:24759) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Vint
Ну блин, побуду гуглом за тебя
Promise.coroutine defines a function it doesn't return a promise - it returns a function.
Хочешь, чтобы работало - пользуй co.wrap