@gogolang

Страница 1239 из 1630
Sliva
20.07.2018
11:14:03
Кстати, а какой-нибудь простенько й онлайн архиватор

?

Получиться написать?

V
20.07.2018
11:15:30
все получится, если сильно захотеть

Google
Sliva
20.07.2018
11:16:12
Согласен

many-faced
20.07.2018
11:16:40
Получиться написать?
да конечно. но это из разряда простой и ненужной дичи

Sliva
20.07.2018
11:20:03
Почему? Человек едет в метро и ему надо файл отправить большого размера, а он с телефона Заходит на сайт, он архивируют и по почте отправляет

many-faced
20.07.2018
11:20:53
ага, закачивает файл, скачивает архив.. чем просто локально зипнуть

many-faced
20.07.2018
11:21:08
реально дичь.

лол, и сколько часов будет файл на сайт загружаться из метро?
да тут лол в том что кинул файл в телегу или дропбокс и всё

если это видео то жаться не будет а если текст то он не будет 1 гиг весить

Алексей
20.07.2018
11:24:23
а в питоне ошибки не надо проверять?
не надо руками вверх по стеку пробрасывать

Alexander
20.07.2018
11:24:37
вы про исключения?

Andrei
20.07.2018
11:24:43
а в питоне ошибки не надо проверять?
в питоне все это делается намного проще

Алексей
20.07.2018
11:24:53
Google
Andrei
20.07.2018
11:25:13
вы про исключения?
можно исключениями, можно написать обертки и избежать бесконечного дублирования кода

Stanislav
20.07.2018
11:25:16
от эксепшенов го бы не стал хуже, конечно

Алексей
20.07.2018
11:25:55
от эксепшенов го бы не стал хуже, конечно
Вообще panic/recover и есть исключения на самом деле.

Alexander
20.07.2018
11:26:03
ну такое, в десятки раз это код не увеличивает

Andrei
20.07.2018
11:26:18
от эксепшенов го бы не стал хуже, конечно
есть паника, и до версии 1.5 json парсер в стандартной либе был реализован через panic driven development

Stanislav
20.07.2018
11:26:18
увеличивает в три раза

Alexander
20.07.2018
11:26:35
если у вас все исключения обрабатываются на самом верхнем уровне - у вас для них должен быть очень серьезный обработчик

Stanislav
20.07.2018
11:27:02
лан че спорить всеравно ничего не изменится. для нормальных людей на го пока нельзя писать

Andrei
20.07.2018
11:27:08
увеличивает в три раза
в 3 раза только в одном месте, а если у тебя вложенные вызовы? и на каждом уровне ты прибавляешь еще по 3 строчки

Stanislav
20.07.2018
11:27:37
в 3 раза только в одном месте, а если у тебя вложенные вызовы? и на каждом уровне ты прибавляешь еще по 3 строчки
да кстати думал про это тоже сказать но полетели бы камни. т.е. минимум в три раза

Алексей
20.07.2018
11:28:37
если у вас все исключения обрабатываются на самом верхнем уровне - у вас для них должен быть очень серьезный обработчик
На самом верхнем уровне обычно либо логгер, либо ничего (тупо падение). Только между самым верхнем уровнем и самым нижнем (место возникновения ошибки) ещё куча промежуточных уровней, которые и могут корректно обработать ошибку.

Alexander
20.07.2018
11:29:15
тогда надо писать обработчики на промежуточных уровнях, а это тоже код, получается

Andrei
20.07.2018
11:30:09
тогда надо писать обработчики на промежуточных уровнях, а это тоже код, получается
только тебе при этом не нужно копипастить одни и теже 3 строчки кода на каждый чих

Алексей
20.07.2018
11:30:13
тогда надо писать обработчики на промежуточных уровнях, а это тоже код, получается
Да, приходится. Да, код. Вот только он осмысленный и выполняет что-то полезное и как правило нетривиальное, в отличии от if err != nil { return nil, err }

Stanislav
20.07.2018
11:30:20
ну в динамике вроде питона просто можно забить на ошибку совсем, и прикол что мы просто получаем маловероятные ошибки иногда, но сохраняем основной код чистеньким. а игнорировать err в го мы не можем

если реально придумать линтер для питона и костылить все возможные nil то получается примерно как в гошечке, кек. но в этом случае помог бы растовый monadic errors т.е. Result

Алексей
20.07.2018
11:31:20
Хотя тут аккуратнее это обсуждать надо, а то я уже read only получал за мои возмущения по поводу ручного проброса ошибок

Google
Andrey
20.07.2018
11:31:22
лан че спорить всеравно ничего не изменится. для нормальных людей на го пока нельзя писать
я заметил, что я на питоне сейчас тупо пытаюсь обрабатывать ошибки на месте их возникновения. То есть пишу в стиле го. Не напрягает и кажется естественным. Читается код тоже более менее, хоть и простыня получается

Andrei
20.07.2018
11:31:43
ну в динамике вроде питона просто можно забить на ошибку совсем, и прикол что мы просто получаем маловероятные ошибки иногда, но сохраняем основной код чистеньким. а игнорировать err в го мы не можем
ну какой-нибудь простенький синтаксический сахар, который бы позволял пробрасывать ошибки наверх без тупого копипаста очень помог бы

я уже молчу про патерн матчинг и прочие прелести нормальных языков

Stanislav
20.07.2018
11:33:28
в бизнес коде питона это нормально запросить базу и обработать случай если значения нет, всякие валидации. тупо получается лапша из условий да, но это бизнес условия, тут нет чернухи на каждый чих если например конекшен оборвался

хотя да, можно выбирать между эксепшенами и нил

Алексей
20.07.2018
11:33:50
я вот не уверен, что это правильно с архитектурной точки зрения
Просто очень часто так бывает, что более низкоуровневый код не обладает достаточной информацией о корректной обработке ошибок. Из-за этого собственно и придумали исключения.

Stanislav
20.07.2018
11:33:53
вобщем СЛОЖНО

Andrey
20.07.2018
11:34:35
мне больше всего conditions&restarts нравится из систем обработки ошибок

но я не настоящий сварщик

Алексей
20.07.2018
11:36:42
Просто очень часто так бывает, что более низкоуровневый код не обладает достаточной информацией о корректной обработке ошибок. Из-за этого собственно и придумали исключения.
То есть к примеру функция открытия файла тупо не может знать что вообще надо делать при возникновении ошибки. Может быть ничего, просто игнор, может быть надо вообще падать, потому что файл очень важен, может быть просто отвечать 404 ошибкой.

Andrey
20.07.2018
11:38:21
функция открытия файла и не обрабатывает ошибки никогда

это для любого языка так

Алексей
20.07.2018
11:38:52
да, она их возвращает

Вот только код, вызывающий её, тоже не всегда знает что делать с ошибкой.

И ему приходится её возвращать

И так далее

И в Go это реализовано самым худшим образом

Google
Andrei
20.07.2018
11:40:58
такое бывает, но очень редко.
а в моей практике - через раз

Andrey
20.07.2018
11:40:59
если это библиотечный код, то он должен генерить свою ошибку

Алексей
20.07.2018
11:41:12
такое бывает, но очень редко.
ну судя по обилию if err != nil { return nil, err } не так уж и редко

Andrey
20.07.2018
11:41:15
и это опять же безотносительно языка

Алексей
20.07.2018
11:41:36
и это опять же безотносительно языка
а вот тут не надо так за все языки говорить

Andrey
20.07.2018
11:41:42
ну судя по обилию if err != nil { return nil, err } не так уж и редко
а кто говорит, что это всегда правильно?

Алексей
20.07.2018
11:42:06
в той же джаве к примеру здоровенные стектрейсы, то есть эксепшен может нихреновый такой путь на верх проделывать

Andrey
20.07.2018
11:43:00
а вот тут не надо так за все языки говорить
а какая разница, какой язык? Вызывается функция, котороая внутри вызывает другую, падучую, без которой она не может. Возвращаем наверх уже обёрнутую ошибку

с exception'ами точно такая же история

Admin
ERROR: S client not available

Andrey
20.07.2018
11:44:27
Если бы исключения были единственно правильным методом, то его везде давно бы внедрили

Алексей
20.07.2018
11:44:30
Так что ситуация когда надо тупо пробросить наверх ошибку не такая уж и редкая

Andrey
20.07.2018
11:45:30
Так что ситуация когда надо тупо пробросить наверх ошибку не такая уж и редкая
удачи с отладкой no such file or directory ошибок тогда, что я ещё могу сказать

Алексей
20.07.2018
11:46:36
удачи с отладкой no such file or directory ошибок тогда, что я ещё могу сказать
Ну в отличии от Go, эксепшены в других языках содержат всегда стектрейс и можно неплохо так отследить место возникновения ошибки.

Алексей
20.07.2018
11:47:17
ну или windows exception 0xХЗЧТОЭТО
это ещё что такое?

Andrey
20.07.2018
11:47:39
это exception, который наверх вам пробросили. гадайте

Google
Алексей
20.07.2018
11:48:00
и чем это так отличается от Go (это error даже без стектрейса, который наверх вам пробросили, гадайте)

Andrey
20.07.2018
11:48:42
ну ладно, memory could not be read вас устроит? ещё один exception

Алексей
20.07.2018
11:49:08
и что это за эксепшены в вакууме?

Andrey
20.07.2018
11:49:26
с исключениями ровно та же история

Алексей
20.07.2018
11:49:56
Прям всегда надо чтоли?

Andrey
20.07.2018
11:50:06
вы что, никогда падающий питон скрипт не отлаживали?

Алексей
20.07.2018
11:50:36
отлаживал, ничего страшного в этом процессе я не увидел

Andrey
20.07.2018
11:50:40
выдаст он вам стек трейс, а наверхе no such file or directory

и гадай, что там за файл он хочет

Алексей
20.07.2018
11:51:11
ну так по стектрейсу на самый низ спустится можно, хоть под отладчиком туда зайти

Andrey
20.07.2018
11:51:51
а всё потому, что чувак, который open вызывает, не обрабатывает исключения, и не оборачивает их в "Failed to open file.txt: no such file or directory"

Andrey
20.07.2018
11:52:27
или обработка гораздо выше, где инфа про файл уже потерялась

и в го не везде надо

но не рекомендуется

Алексей
20.07.2018
11:53:44
и в го не везде надо
вот только в го приходится руками пробрасывать ошибку вверх

с оборачиванием или без - вообще не важно, всегда приходится, или на месте обрабатывать, что не всегда возможно

Andrey
20.07.2018
11:54:43
ну. не пользуйтесь го, что я могу сказать

Алексей
20.07.2018
11:55:04
ну. не пользуйтесь го, что я могу сказать
ну я и не использую особо, кроме одного петпроджекта

Andrey
20.07.2018
11:55:36
непонятен ваш посыл просто, что так трудно ошибку пробросить?

Страница 1239 из 1630