Но многие, как оказалось, могут позволить себе работать несколько месяцев вообще без зарплаты...
Совет тем, кто работает на иностранные компании в данный момент- учитесь на чужих ошибках. Если начинаются задержки зарплат, лучше сменить работу. Тот же пример разработчика msi afterburner.
Другое дело, что у них могут быть проблемы с получением денег по исполнительному листу, потому что компания скорее всего не имеет ни денег, ни имущества. Но тут уж ничего не поделаешь - деньги контора получала из-за рубежа, и когда поток иссяк - никакой суд не поможет.
Какая грустная новость...
Ну, если они решили остаться, значит у них есть план.
Ну, это все частные примеры- сложно подобрать прям реалистичный. Глобально меня интересует ситуация, когда ошибка уже допущена в коде. Попробую еще пример- джун допустил деление на ноль, на ревью пропустили, тесты прошли, код на проде.
Мой основной вопрос в том, что panic в go, как я понимаю, никак не хендлится- try catch отсутствуют, и вслучае чего, если это произошло в главном потоке- всё, полная остановка приложения. Это так?
Обычно такие штуки делаете не вы сами, а библиотеки. Что делать в случае, если библиотеки кидает panic при таких ошибках? Свои писать?
Эта ерунда — на границе с внешним миром. Вам там всё равно придётся проверять и обрабатывать кучу вещей, вроде 500-ой ошибки от сервера или лоад балансера, разрыва соединения с БД, по иным причинам несовместимой схемы, и так далее.
Это ерудна кратно увеличивает время разработки. В десятки раз. Только что ради прикола посмотрел что go выдает в делении на ноль
panic: runtime error: integer divide by zero
Вы предлагаете при каждой операции деления в проекте проверять, не является ли делитель нулем? Вы предлагаете каждый такой похожий случай (который может вызвать panic) обрабатывать?
В third-party api в ответе тип поля поменяли с типа Long на тип String. Вместо циферок теперь буквочки. Как это станет известно?
У вас есть в модели nonnull поле. Такое же было в базе данных, но джун убрал это ограничение, и теперь часть данных не может смапится из базы в модель. Как это станет известно?
Я думаю, что можно найти и другие примеры. Это не может быть известно. И каждый такой чих обрабатывать с моей точки зрения, глупо. Время разработки в космом улетит, если каждую строчку кода или вызов библиотеки, которая может изменится, обкладывать if-ами на все случаи жизни.
На моем текущем проекте (java/kotlin) есть порядка 30 подключенных по ресту рекламных сетей, занимающихся маркетингом. Они все имеют своё апи. Им шлются юзеры, регаются, потом они опрашиваются, от них по апи приходят статусы. У нас все это завернуто в for. Иногда они в одностороннем порядке меняют апи (урлы, респонсы), и естественно валятся ексепшены. Но, так как в цикле каждая итерация завернута в try catch, отлетает только один брокер.
Теоритически это можно и на go сделать, как я понял заворачивать в потоки, и я так понимаю отслеживать состояние, типа упал panic или нет, но это же п****ц какой-то для такой тривиальной задачи.
Ну или подключать всякие mq очереди, но опять же, это по сути костыль.
Раньше поглядывал на go, но теперь точно не буду- это слишком жесткое ограничение на уровне языка. Интересно, как try catch в rust выглядит.
А можете пример привести? Потому что go не знаю, а быстро не разобраться.
Не получится ли так, что через maybe и optional можно предусмотреть только те ошибки, о которых ты можешь подумать? Меня интересует случай, когда ошибка случается, то есть та, которую не предвидели. Цикл прервется или нет, с использованием методов maybe и optional, при возникновении непредусмотренной ошибки?
А вот как вы в преведённом вами примере вернёте из метода отделный список ошибочных пользователей, чтоб вышестоящий алгоритм или человек мог с ними что-то сделать?
А никак. Только у вас вопрос демагогический немного- необязательно возвращать отдельный список, что бы с ним что-то сделать. Если сразу хочется, в обработке исключения можно ложить в лист, после цикла у вас будет список необработанных пользоветелей. Или помечать в базе через флаг, что бы не потерялся, и потом уже с ним работать.
Работа в ускоренном темпе, с деадлайнами, выгораниями и вот этим вот всем совершенно не привязана к географическому положению.
Эм, разве существует законный запрет на копирование изображения? В интернете?
Но многие, как оказалось, могут позволить себе работать несколько месяцев вообще без зарплаты...
Совет тем, кто работает на иностранные компании в данный момент- учитесь на чужих ошибках. Если начинаются задержки зарплат, лучше сменить работу. Тот же пример разработчика msi afterburner.
Какая грустная новость...
Ну, если они решили остаться, значит у них есть план.
Хм, понял. Удачи им тогда в судах родины.
Ну пусть в суд международный обратятся, в еспч какой там или другой...
Аааа, точно.
Ну ладно, учитывая что они отказались от релокации, пусть наслаждаются жизнью в россии.
Не меньше чем людей, верящих в теории заговора и клятых капиталистов, которые едят младенцев ради прибыли.
Я из Беларуси, и все компании беларусские. Соответственно все граждане Беларуси.
Аххахаха, нет.
Нашему директору заблокировали польские счета в польской прослойке на месяц. Без обьяснения причин.
В августе Литва заморозила все платежи от заказчиков на месяц.
Компании партнеру в Грузии закрыли счета в банке и дали дней десять на то, что бы забрать деньги.
Знакомый сейл в другой компании- проблемы с платежами в Литве.
Смертельного ничего нет, но это не "вообще никаких проблем".
Ну так и тут никто не покупал как бы...
Какое дно? EGS ошиблись, раздав игру издательства, которое запретило распространение в россии. Какое тут дно? Ошибок человеческого фактора?
Не волнуйтесь, главное- не здавайтесь, и у вас все получится.
Спасибо большое за комментарий. Меня в notion больше всего и пугает, что без интернета он не работает. Теперь есть чем заняться на выходных :)
Я понял, не сразу, но теперь понял :)
Любопытно, а есть такие сейчас языки, входящие в топ 10 веб разработки? Или вообще в принципе?
Ох и любите вы до примеров доколупаться. Я имел ввиду что он написал что-то вида
Но уже не важно, я гугланул ответ. Есть способ, но как вы и писали, это не в стиле го. В стиле го пытаться проверить переменные перед операцией.
Я уже тоже, спасибо.
Ну, это все частные примеры- сложно подобрать прям реалистичный. Глобально меня интересует ситуация, когда ошибка уже допущена в коде. Попробую еще пример- джун допустил деление на ноль, на ревью пропустили, тесты прошли, код на проде.
Мой основной вопрос в том, что panic в go, как я понимаю, никак не хендлится- try catch отсутствуют, и вслучае чего, если это произошло в главном потоке- всё, полная остановка приложения. Это так?
Обычно такие штуки делаете не вы сами, а библиотеки. Что делать в случае, если библиотеки кидает panic при таких ошибках? Свои писать?
Это ерудна кратно увеличивает время разработки. В десятки раз. Только что ради прикола посмотрел что go выдает в делении на ноль
panic: runtime error: integer divide by zero
Вы предлагаете при каждой операции деления в проекте проверять, не является ли делитель нулем? Вы предлагаете каждый такой похожий случай (который может вызвать panic) обрабатывать?
В third-party api в ответе тип поля поменяли с типа Long на тип String. Вместо циферок теперь буквочки. Как это станет известно?
У вас есть в модели nonnull поле. Такое же было в базе данных, но джун убрал это ограничение, и теперь часть данных не может смапится из базы в модель. Как это станет известно?
Я думаю, что можно найти и другие примеры. Это не может быть известно. И каждый такой чих обрабатывать с моей точки зрения, глупо. Время разработки в космом улетит, если каждую строчку кода или вызов библиотеки, которая может изменится, обкладывать if-ами на все случаи жизни.
Жесть то какая.
На моем текущем проекте (java/kotlin) есть порядка 30 подключенных по ресту рекламных сетей, занимающихся маркетингом. Они все имеют своё апи. Им шлются юзеры, регаются, потом они опрашиваются, от них по апи приходят статусы. У нас все это завернуто в for. Иногда они в одностороннем порядке меняют апи (урлы, респонсы), и естественно валятся ексепшены. Но, так как в цикле каждая итерация завернута в try catch, отлетает только один брокер.
Теоритически это можно и на go сделать, как я понял заворачивать в потоки, и я так понимаю отслеживать состояние, типа упал panic или нет, но это же п****ц какой-то для такой тривиальной задачи.
Ну или подключать всякие mq очереди, но опять же, это по сути костыль.
Раньше поглядывал на go, но теперь точно не буду- это слишком жесткое ограничение на уровне языка. Интересно, как try catch в rust выглядит.
А можете пример привести? Потому что go не знаю, а быстро не разобраться.
Не получится ли так, что через maybe и optional можно предусмотреть только те ошибки, о которых ты можешь подумать? Меня интересует случай, когда ошибка случается, то есть та, которую не предвидели. Цикл прервется или нет, с использованием методов maybe и optional, при возникновении непредусмотренной ошибки?
А никак. Только у вас вопрос демагогический немного- необязательно возвращать отдельный список, что бы с ним что-то сделать. Если сразу хочется, в обработке исключения можно ложить в лист, после цикла у вас будет список необработанных пользоветелей. Или помечать в базе через флаг, что бы не потерялся, и потом уже с ним работать.