Gor
@Romshark спасибо.
Roman
исключение = неожидаемая, фатальная ошибка после которой обычный control flow не должен продолжаться (однако можно словить, чтоб не повалилась совсем) классический пример = неверный тип параметра, после такого нельзя продолжать ошибка = ожидаемая ошибка, после которой можно спокойно продолжать работать например "файл не найден"
Oleh
Ето всё я понял, как тогда обрабатывать такое поведение?
Anonymous
Тогда у тебя в catch будет оставаться только реально неведомая хуйня.
Anonymous
AI
самым лучшим конечно-но же UDP, но насколько это реально в браузере я увы не знаю, WebSocket тоже подойдёт, однако TCP/IP для этого "не идеален"
К сожалению самое лучшее что мы можем тут иметь - это tcp/ip. fixed interval broadcast, 30 hz моя идея в бродкастах только по событию... в принципе динамики рандомной не так уж и много. Игроков в принципе не много, но ресурс должен быть. Но всё равно думаю максимум ~30
Roman
иключение? - throw ошибка? - return { actualResult, new Error() }
Anonymous
Anonymous
Maybe, Either.
Oleh
https://github.com/chrissrogers/maybe ?
Oleh
Ясно, спасибо, буду думать
Roman
К сожалению самое лучшее что мы можем тут иметь - это tcp/ip. fixed interval broadcast, 30 hz моя идея в бродкастах только по событию... в принципе динамики рандомной не так уж и много. Игроков в принципе не много, но ресурс должен быть. Но всё равно думаю максимум ~30
обязательно сглаживание нужно добавить, интерполяцию чтоб не было лагания когда картинок рисуется 60/сек а позиция обновляется 30/сек, но если игроков не много можно и до 60hz попробовать
Nurik
Ето всё я понял, как тогда обрабатывать такое поведение?
Написать обработчик ошибок, который глобально доступен. передавать объекты ошибок в него без throw. Ну и return. А исключения на то и исключения. Что обрабатывают только исключительные ситуации. Ошибка валидации например это не исключение а именно ошибка.
AI
обязательно сглаживание нужно добавить, интерполяцию чтоб не было лагания когда картинок рисуется 60/сек а позиция обновляется 30/сек, но если игроков не много можно и до 60hz попробовать
Это я понимаю, в этом вопрос не стоит. Я понял к чему вы клоните, но у меня в игре всё проще. Тут поклеточное позиционирование. Поэтому вопрос только в синхронизации позиции.
Oleh
@nurik6 можно какие-то примери всего этого увидеть? Хочу посмотреть как такое в реальных приложениях действует
AI
нет, 30 игроков не всего, а ожидаемо максимум на одной локации.
Nurik
@nurik6 можно какие-то примери всего этого увидеть? Хочу посмотреть как такое в реальных приложениях действует
Ну в самом простом случае, пишешь модуль, который возвращает отнаследованный EventEmitter. Делаешь его синглтоном. Внутри принимаешь объекты ошибок, либо если это не объект то значит код http либо другой частоиспользуемый код по которому можно распознать тип ошибки. Затем там где нужно вызываешь обработчик и делаешь emit с объектом ошибки. Ну и в конец midleware пайплайна добавляешь обработчик ошибок и в самом низу обработчик исключений. А исключения будут всплывать. Как-то так.
Nurik
и две папочки exceptions и errors в корне проекта. В errors может быть сколько угодно сложная иерархия ошибок как и в exceptions.
Nurik
Но с этим подходом есть проблемы. Нужно не забывать делать return после каждого errorHandler.emit(), иначе — жопа.
Gor
это не проблема. это требование к пониманию работы JS)
Elijah
🖖
Danny
☝️
Obi
здравствуйте, подскажите с вопросом про passport.js
Obi
у меня есть схема в монге, вот такого вида
Obi
password: String, username: String, level: String
Obi
и использую passport-local, вот, сделал такую серилизацию
Obi
passport.serializeUser((user, done) => { done(null, { username: user.username, level: user.level }); }); passport.deserializeUser((username, done) => { User.findOne({username: username}, (err, user) => { done(err, user); }) });
Obi
на строчке с поиском юзера монго кидает ошибку
Obi
CastError: Cast to string failed for value "{ username: 'test',
Obi
хотя username не undefined, оно приходит, но почему не каститсья, не могу понять...
Obi
но если прокинуть просто объект юзера, а не поля в объект, то потом, почему то, этот объект позварщаяется как null...
AI
У тебя ответ в коде.
Obi
черт, смотрю
Obi
хм... можно строчку пожалуйста
Obi
уф)
Obi
passport.deserializeUser((user, done) => { User.findOne({username: user.username}, (err, user) => { done(err, user); }) });
Obi
спасибо)
Aleksandr
Народ, есть вопрос. Кто знает что с гитхабом https://github.com/AlexStrNik/BlocXus/blob/master/backend.js?
Aleksandr
почему-то именно этот файл очень странно отображается
Aleksandr
да, не с мака же
Gor
@AlexStrNik смотри https://github.com/AlexStrNik/BlocXus/commit/21ab1a9ede7b0507d4f285f049997e0ed285c10c
Gor
у тебя давно и упорно кодировка файлов такая
Gor
смотри настройки редактора
Igor
Тут есть кто нибудь умный, кто может сформулировать жизненный кейс когда происходит нарушение целостности данных?
Igor
https://ru.m.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8
Vitaly
нормально объяснил?
Igor
Ну я хочу убедиться правильно ли я понял.
Таймураз
https://ru.m.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8
Однажды столкнулся с тем, что firewall блокировал один определенный пакет, из-за чего зависала отправка файла Ему не нравилась уязвимая часть pdf файла
Таймураз
При этом клиент принимал все остальные пакеты, но не мог завершить сеанс передачи так как не хватало последнего Было охуенно
Nurik
При этом клиент принимал все остальные пакеты, но не мог завершить сеанс передачи так как не хватало последнего Было охуенно
Да у меня тоже такое было. Ложное срабатывание по сигнатуре. Но у меня логи были. Быстро нашёл причину.
Nurik
Причем то что в архиве — нифига не помеха.
Eugene
Доброго времени суток :) Юзаю mailgun для отправки почты, хочу например отправлять письма с noreply@example.com Как запретить отправку почты c нашего домена - всем кроме нас? Вроде как-то через SPF делается, но точно хз Хз в каком чатике еще задать вопрос - если есть чатик по теме - то дайте ссылку:) То есть сейчас тупо могут отправить вот таким скриптом сообщение. <?php $to = "VICTIM@example.com"; $subject = "Password Change"; $txt = "Change your password by visiting here - [VIRUS LINK HERE]l"; $headers = "From: support@example.com”; mail($to,$subject,$txt,$headers); ?>
Eugene
🤔
Gor
@HellPirate spf TXT = "v=spf1 ip4:YOURIP -all"
Gor
но он не запретит другим отсылать почту
Gor
а лишь скажет почтовикам кто проверяет SPF что источник откуда идет почта от вашего имени не доверенный
Cenator 🐈
не надо сюда это тащить
Mykola
import { Promise } from "bluebird"; export class ClassNmae { private async someFun() { const res = await this.getSomeResult() } private getSomeResult() { } }
Mykola
error TS2529: Duplicate identifier 'Promise'. Compiler reserves name 'Promise' in top level scope of a module containing async functions. как это пофиксить?
Dmitry
А что, в JS уже появились public, private ? )))
Cenator 🐈
а, не, если промис вернешь то ок
Mykola
import * as Bluebirb from 'bluebird'
Спасибо тебе добрый человек.
Mykola
да и у тебя getSomeResult не async, не сработает
Забыл написать функция return Promise
Mykola
private getCoinMarketCapPrices(currency: string) { return new Bluebirb((resolve, reject) => { this.client.getTicker({limit: 0, convert: currency}).then((prices: any) => { resolve(prices); }); }); }
Mykola
Переписую с promise на async первая проба, что можно улутшить ?.
Анатолий
Переписую с promise на async первая проба, что можно улутшить ?.
Избавься от кетч, хотя тут тебе все скажут что трай и прдобная ересь отстой, но для начала просто измени простые вызовы на авейт + трай