Rafael 🌵
Rafael 🌵
Rafael 🌵
Roman
короч по моему мнению лучше
1. не инвалидировать сессии, если девайс родной
2. предоставить список текущих сессий и возможность их мануальной инвалидации
3. инвалидировать сессии инициированные с чужих компов
4. предоставить мануальные настройки в разделе безопасности
Roman
Yaroslav 🇺🇦
Rafael 🌵
CherryTea
почему?
Ну вопервых это ещё не вошло в стандарт, во вторых если нужна конструкция в одну строку асинк с авейтом не оч хорошо выглядит
Roman
5. чипануть мозк юзерам
уже очень скоро) только не мозг, а в кожу между указательным и большим пальцем, инъектиця маленького пассивного чипа-идентификатора уже практикуется в США)
CherryTea
И ещё если я не знаю что мне придёт промис или нет, я могу написать проверку на метод then, с асинком я чёт не понял что делать в таком случае
Rafael 🌵
Rafael 🌵
CherryTea
Нет вообще
Vova
Rafael 🌵
А, ну лан
Roman
Стримы это rxjs, не?
почти 🙂в RxJS к сожалению нет инструмента создания своих собственных стримов, там всё на обработке событий (event driven programming) зациклено, а вот asynchronous control flow к сожалению нет
поэтому пришлось мне дополнить парадигму примитивом "стрим"
CherryTea
Roman
асинхронная загрузка больших файлов например очень хорошее применение для стримов
Roman
стримы можно отменить, приостанивить, зациклить...
Yaroslav 🇺🇦
Roman
var fileUpload = api.uploadFile("/path/to/file.mp4")
.retry([api.TimeoutError, api.BadGatewayError])
fileUpload.attach(() => {
// finished uploading
})
fileUpload.failure((err) => {
// upload failed
})
attach аналог then промисов, failure аналог catch
Roman
типа "загрузи файл X, если не получится загрузить по причине Timeout или BadGateway то пробуй заново пока не получится, иначе переходи в failure"
Roman
// приостановить загрузку
fileUpload.pause()
// отменить загрузку
fileUpload.cancel()
CherryTea
тема, спасибо
Roman
причём api.uploadFile это композиция из под-стримов, которая вызывает стримы api.createFile(), api.writeFile()
CherryTea
CherryTea
И ещё такой вопрос, скажем у меня есть спа которое во время загрузки потеряло соединение. Поднялось оно снова через 20 минут, я тип могу возобновить загрузку?
Stanislav
Roman
А получить прогресс загрузки иполностью отметить конечно же тоже можно?
function uploadFile(newFileName) {
return streams.stream((stream) => {
var file;
var chunks = [...];
var currentChunk = 0;
var childSequence = api.createFile(newFileName)
// если неудаётся создать файл - то пробуй заново пока не получится
// может клиент просто в тонель заехал временно и связи пока нет
// HTTP timeout это не повод обрывать загрузку
.retry(api.Timeout)
// после успешного асинхр. создания файла начинай загружать
.attach((createdFile) => {
file = createdFile;
api.writeToFile(file, chunks[currentChunk]);
});
// повтори загрузку чанка если связь пропала
.retry(api.Timeout)
// повторяй загрузку чанка пока ещё есть чанки
.repeat(() => {
// кинь событие успешного прогресса в главный стрим
stream.event("upload_progressed", {chunk: currentChunk});
currentChunk++;
return currentChunk >= chunks.length();
})
// заверши загрузку
.attach(() => {
// заверши главный поток uploadFile
stream.close();
})
// в случае любой ошибки в секвенции под-стримов uploadFile
// и приберись, удали неполностью загруженный файл
childSequence.failure(api.deleteFile(newFileName));
// в случае отмены секвенции под-стримов uploadFile
// и приберись, удали неполностью загруженный файл
childSequence.abortion(api.deleteFile(newFileName));
// сделать этот стрим родительским (high level stream, компоцизия стримов)
// чтоб отмена или паузирование стрима uploadStream отразилась на секвенции
stream.adopt(childSequence);
})
}
Roman
вот полноценный пример отменяемой, паузируемой и асинхронной загрузки большого файла, всего 42 строки, никакой псевдо-рекурсии, не боится потери связи
CherryTea
CherryTea
Беру
CherryTea
Ты ща решил все мои проблемы))
Roman
правда беда в том что я написал QuickStreams для QML C++, но в JavaScript пока эту парадигму не имплементировал, работал над ней где-то 2 месяца, хотел сделать серию видео туторов но времени нет
Roman
https://qbeon.github.io/QuickStreams/
Roman
однако я не обновлял код в примерах с версии v0.1.0, он значительно упростился в v0.2.0
Roman
самое интересное это вот:
Roman
Roman
услышать feedback мне очень интересно) поскольку Streams парадигма это как Promise + Rx на стероидах
Yaroslav 🇺🇦
пили видосы
Roman
пили видосы
для этого нужно хотя бы реализацию в QML до v1.0.0 довести)
Roman
если кто задонадит то это меня немного восвободит от фрилансерской деятельности
Roman
но хз где публиковать
Roman
хотелось бы от RxJS'еров услышать feedback
gearmobile
гайз, а где фрилансеры с upwork трутся? канал telegram?
Rafael 🌵
gearmobile
Юрий
Здоров, ребят. Не буду нарушать традиций и представлюсь) Величают Юрцом, работал в мэйле, яндексе и в нескольких стартапах. В данный момент пилю фронт для workato.com - калифорнийский стартап про интеграцию сервисов.
Интересуюсь универсальными решениями (ssr+spa) и есть работающая наработка на базе react+mobx.
Юрий
Но как-то в последнее время все больше поглядываю в сторону vue
Anonymous
Соблазн силен)
Юрий
Нравятся 3-in-1 компоненты, шаблоны с возможностью заюзать render-функцию в сложных случаях и реактивность из коробки
Юрий
Так вот вопрос: есть ли какой-либо аналог mobx, но используюший под капотом реативный движок vue
Yaroslav 🇺🇦
Всем нравится, но многие бояться признаться)
Yaroslav 🇺🇦
Vuex
Юрий
То есть чтобы можно было создавать модели с реактивными свойствами, что-то вроде вот такого:
Юрий
class User {
@observable
firstName = '';
@observable
lastName = '';
@computed get fullName() {
return ${this.firstName} ${this.lastName};
}
}
Rafael 🌵
Rafael 🌵
Yaroslav 🇺🇦
Тут чутка не так. Все свойства можна описать в модуле юзер, а отдавать либо гетером, либо лепить франкинштейнов в вьюхах где надо,
Юрий
Теоретически для этого можно юзать объекты Vue, но по-первых это кажется каким-то костылем, а во-вторых есть сомнения в плане производительности при создании множества объектов
Nikita
Юрий
Юрий
Хочется, иметь computed-свойства прямо на объекте
Юрий
Мне vuex не нравится
Юрий
Ну и как-то профессиональный рост в определенный момент закончился
Nikita
-
Доброго времени суток, господа. Подскажите, тут Nuxt так же обсуждают или для него отдельный канал какой то есть? (Не нашёл)
Nikita
Юрий
к тому же он предлагает работать с pojo's а я люблю классы