Daniel
а если у тебя там логика "ненулевой ресивер или ненулевой первый параметр" - что делать?
Daniel
К примеру, сервак вконтакта должен падать, если я ему зашлю png, а внутри него pdf?
если парсер формы тебе пропустил эти странные данные, и ты к ним не готов - да, должен падать. потому как это значит, что в парсере формы неустранимая ошибка
Мерль
не факт. я как разработчик либы выше знаю надо мне упасть, или обработать ошибку и выплюнуть в логи. данные на выхзод могут придти извне - не обязастельно хардкод
Какой процент у тебя не хардкода? И если ты не проверяешь данные пользователя, а сразу пихаешь их в конструктор - то ты ССЗБ
Daniel
паника тоже попадет в лог, но в тот, который читает робот-алертер
Aleksandr
Какой процент у тебя не хардкода? И если ты не проверяешь данные пользователя, а сразу пихаешь их в конструктор - то ты ССЗБ
это не конструтор, а фабрика. и в фабрике как рах и происходит валидация, чтобы она выдала либо 100% рабочий инстанс либо ошибку валидации входных данных. выше ты сам говорил про валидацию внутри
Anonymous
паника тоже попадет в лог, но в тот, который читает робот-алертер
Но дополнительно тратится время на перезапуск сервака (при этом проблему перезапуск не решает)!
Мерль
это не конструтор, а фабрика. и в фабрике как рах и происходит валидация, чтобы она выдала либо 100% рабочий инстанс либо ошибку валидации входных данных. выше ты сам говорил про валидацию внутри
Нельзя отдавать всю валидацию на откуп фабрике(или конструктуру), потому что она скорее всего не знает твоей бизнес-логики Опять же, ССЗБ
Aleksandr
Нельзя отдавать всю валидацию на откуп фабрике(или конструктуру), потому что она скорее всего не знает твоей бизнес-логики Опять же, ССЗБ
эм, фабрику именно для того и вводят во флоу, чтобы только она знал как правильно создать инстанс
Мерль
Но дополнительно тратится время на перезапуск сервака (при этом проблему перезапуск не решает)!
Если у тебя в сервере принципиально невалидный код (ты где-то передаёшь неинициализированную переменную), то эта хрень вообще перезапускаться не должна, это должно тупо упасть и не работать
Aleksandr
эм, фабрику именно для того и вводят во флоу, чтобы только она знал как правильно создать инстанс
если у тебя есть еще где-то валидация выше - ок. но в конечном итоге тфабрика не дорлжна создать нерабочий инстанс
Daniel
конечно, надо
Anonymous
Может ещё сервер по питанию перезапускать 😄
Daniel
обрабатывать неустранимые ошибки - моветон
Мерль
эм, фабрику именно для того и вводят во флоу, чтобы только она знал как правильно создать инстанс
Тогда давай разграничим, в Go нет конструкторов, но часто применяются функции-фабрики Речь о том, должна ли падать библиотечная фабрика в случае, если ей передали невалидные параметры с точки зрения логкии библиотеки. С моей точки зрения - да, должна, потому что это гарантировано поломанная логика программы, использующей библиотеку
Valentin
Просто не надо кидать панику, если проблема устранимая
Мерль
Вместо того, чтобы сервер работал, и сыпал ошибки где проблемы, вы предлагаете его ЦЕЛИКОМ останавливать. Не надо так.
Надо Нельзя допускать работы кода, который невалиден, который в принципе написан неправильно
Мерль
Просто не надо кидать панику, если проблема устранимая
Разумеется Речь о том, что с большой долей вероятностью неправильно инициализированный объект - это неустранимая ситуация
Daniel
главное правило молитвы, как известно - не расшибить лоб
Anonymous
Разумеется Речь о том, что с большой долей вероятностью неправильно инициализированный объект - это неустранимая ситуация
На Go не пишут проги для полёта в космос, так что о большой доле вероятности всё поломать - это преувеличение.))
engelbart
Может вы и правы, но я ю не хотел либу котрая меня роняет при условии что она может вернуть ерр
Мерль
На Go не пишут проги для полёта в космос, так что о большой доле вероятности всё поломать - это преувеличение.))
Причём тут космос? Речь о том, что неустранимая ошибка - это индикатор ошибки в логике, а не во входных данных в программу. И ошибки логики нужно исправлять вот прям сразу, а не пытаться выехать на одном колесе Канонический пример - это паника при попытке сделать слайс с длиной больше ёмкости
Мерль
Такие штуки нужно вылавливать как можно раньше, идеально - вообще на этапе компиляции или прогона линтеров
Anonymous
Чем в этом отношении стандартная библиотека отличается от сторонней?
тем что в операция деления не может вернуть error (как и операции со слайсами)
Мерль
но не возвращает, и это очень правильно
Мерль
тем что в операция деления не может вернуть error (как и операции со слайсами)
Ничто не мешало прикрутить возврат error к взятию слайса
Anonymous
А make мог бы
Много кто мог бы. Но если бы после каждого сложения и деления приходилось обрабаьывать ошибку, на go бы никто не кодил
Мерль
Много кто мог бы. Но если бы после каждого сложения и деления приходилось обрабаьывать ошибку, на go бы никто не кодил
Дело не в том, что это громоздко. Если бы это вообще волновало бы авторов го, они оставили бы исключения Дело в том, что если ты передаёшь отрицательное значение длины слайса или канала в make - это значит что ты серьёзно накосячил, когда писал код, и где-то пропустил нужную проверку или не понимаешь, как работает make
Мерль
И тут нет никаких вариантов, кроме как падать
Anatoly
По-моему все просто, если ты оперируешь данным полученными снаружи - ошибка, если своими - паника.
Anonymous
И тут нет никаких вариантов, кроме как падать
Вы сторонник падать всегда )) Только так суровые программисты отлаживают программы. Если программа получила ошибку, она не достойна жить. 😄
Мерль
Вы сторонник падать всегда )) Только так суровые программисты отлаживают программы. Если программа получила ошибку, она не достойна жить. 😄
Перечитай мои последние три сообщения ещё раз, если тебе не трудно Вон, Анатолий всё правильно сказал.
Daniel
или канибалом
Anonymous
Это была шутейка
Daniel
это - тоже
hex
за что ты так ненавидишь нумпад?
Anonymous
Народ, при помощи golang можно получить hwid hdd диска?
Anonymous
несомненно
Пример есть? В гугле нормальной информации мало. Нужно привязку к железу сделать =\
Anonymous
несомненно
Нашел костыль с запуском в cmd: wmic DISKDRIVE get SerialNumber
Anonymous
Но хотелось бы средствами golang
Мерль
Скорее всего придётся использовать обвязку вокруг C
Мерль
andrei
чет я так и не понял что с goodlang
Мерль
@kirilldanshin
Anonymous
gogland?
Нет, форком go с потокобезопасными мапами и дженериками
Valentin
в 1.9 сделали же обвязку вокруг стандартной мапы для потокобезопасных операций
andrei
дженерики-то не сделали
Valentin
дженерики не нужны :trollface:
Vladimir
https://tip.golang.org/src/sync/map.go
Konstantin
а кто плагинами пользуется? какой для их использования основной case?
Anatoly
там кстати веселая обертка
Ну норм же сделали: мьютекс и атомик. Все не самому писать.
Vladimir
Ну норм же сделали: мьютекс и атомик. Все не самому писать.
ну оно чуть сложнее чем просто обертка )
Vladimir
я бы сказал
Anatoly
Ну прям чуть, по скорости прооптимизировали не сломав прозрачности.
Мерль
а кто плагинами пользуется? какой для их использования основной case?
Я не пользовался, но я представляю себе два юзкейса: - если не хочется долбаться с компиляцией C кода, можно завернуьть пакет со сложной сборкой в плагин - чтобы пользователи могли прикручивать свои плагины без пересборки проекта, как это сделано у micro, например
Павел
Всем привет, есть желание попробовать Go, но есть пара вопросов: какую ORM используете и почему, ну и IDE?
Anonymous
ORM :D
Anonymous
Никакую
Anonymous
ide тут просто зоопарк, я phpstorm + golang plugin. это идентично  gogland
Alexei
Всем привет, есть желание попробовать Go, но есть пара вопросов: какую ORM используете и почему, ну и IDE?
go-pg понравился ORM, но он очень простенький, зато нативненько взлетает в любой ОС. vim, vscode
Павел
Спасибо большое