Alexander
в мейне допустим делаешь канал для ошибок и передаешь везде, потом select между ним и каналом, который сигтерм слушает
DI
Никто не сталкивался с ошибкой 405 когда делаешь запрос PUT на апи? Делаю запрос через client.Do, но что т как то всегда один ответ
DI
Отсылаю через postman - все норм
Alexander
проблема в том, что таким паником ты не даешь закрыть все ресурсы нормально и какие-то вещи чтобы отработали. к примеру файлик юникс сокета не удалится, если ты паник сделаешь в другом треде
Alexander
ну или там чтобы у тебя слилась инфа с тех мест, где ты стату какую в приложении накапливаешь
Alexander
не так
Alexander
деферы отработают только в текущем треде
Alexander
у тебя однопоточное приложение на го?)
Vladislav
в конце его можно заловить и завершить app корректно
Alexander
бле
Alexander
я же говорю)
Alexander
паники не перехваютываются кросс горутинно
Vladislav
паники не перехваютываются кросс горутинно
в чем проблема? ловишь в каждом треде
Alexander
а как остальные узнают, что им надо закрывать ресурсы?
Vladislav
это и в других языках с исключениями всё так же
Alexander
в других языках
Alexander
ну хватит опыт из других языков переносить в го пытаться. ну уже нет мочи
Vladislav
но panic - один в один как исключения же
Vladislav
чуть менее удобно его ловить, но в этом и вся разница
Alexander
это очень плохой стиль паниковать, лог фатал не в главной горутине
Alexander
и я уже пример приводил: открыли юникс сокет в другой горутине, файл юникс сокета не удалится
Tarlan
Ребят, не могу найти пример библиотек, где на вход получает подсеть(1.1.1.0/24, пример) и какой-либо порт и возвращал найденные узлы сети
Z
https://saverudata.org/dbgeo/{$data[0]}/$data[1]/$data[2]/{$data}.json
удалось выгрузить все данные?
Maks
DNS_PROBE_FINISHED_NXDOMAIN
Maks
Не успел на го переписать)
Maks
домен не доступен
Alexander
По айпишке мб работает? Могут же логи какие сохраниться
Maks
Уже вроде жеж нельзя
Maks
А парился ради интереса парсер намутить многопоточный с многопоточной загрузкой. Ну или многопроцессной как я до этого делал)
Tarlan
грасиас но немного не то решил использовать ParseCIDR + netDialTimeout
Z
домен не доступен
в файл hosts пропиши 188.114.96.7 saverudata.org
Z
Кстати да. Уже скачиваю
ARTEM
Что вы там все скачиваете
Anonymous
отчасти. Меня выбесило то что, нельзя метод прилепить к структуре из другого пакета, синтаксис лямбд
всм нельзя? type UserHandler struct{} func (uh *Userhandler) RestoreCache() и вот у структуры будет метод
Vladislav
Anonymous
кого и что прилепить?
Vladislav
кого и что прилепить?
свой метод к чужой структуре
Alexander
лицерука, сейчас
Vladislav
в котлине, например, это легко делается: fun String.getRightHalf() = substring(length / 2)
Vladislav
в Го такого похоже не достичь
Vladislav
хотя синтаксис позволяет
Maks
Потому что ты не понимаешь как в го работают пакеты и для чего это сделано
Alexander
https://go.dev/play/p/5ZTecYGxf1C
Maks
он построен таким образом, что бы уменьшить возможность написания говнокода
Vladislav
он построен таким образом, что бы уменьшить возможность написания говнокода
Очень смешно. Половина кода проверки на ошибки, постоянные циклы и копипаста
Andrey
Вот всегда поражаюсь людям, которые прибегают с других языков и начинается: тут не то, там не так, а вот в другом языке можно... Идите обратно, че пришли то тогда
Vladislav
Бомбит просто от того какой убогий язык и откуда такая популярность
Vladislav
ладно пойду дальше мучаться
Maks
Очень смешно. Половина кода проверки на ошибки, постоянные циклы и копипаста
1. Постоянные циклы это что? Оно разве не во всех языках так? 2. Копипаста это только потому что ты не знаешь как правильно строить пакеты. 3. Проверки на ошибки - единственный бич. НО! Эти проверки на ошибки помогают сделать код более однозначными, ты всегда знаешь где и как оно работает, какие ошибки где возникли. Обработать их более однозначно и точно.
Andrey
Бомбит просто от того какой убогий язык и откуда такая популярность
а бомбит ли от того, что в с/с++ нет CG? может вообще выкинуть его как язык
Maks
в котлине, например, это легко делается: fun String.getRightHalf() = substring(length / 2)
в котлине какие енамы? Меня вот бомбило с енамом в джаве после c#. Потому что не канон типа. Не его типо зона ответственности данные возвращать. Однако с опытом понимаешь что у всегда свои идеи и свой смысл. Если ты понимаешь что и зачем - то молодец. Если нет - то подумай еще. Но не стоить лить на язык помои если тебе что то не ясно)
Anonymous
а ты читал про пакеты в го?
Anonymous
а, ему уже написали
Alexander
Бомбит просто от того какой убогий язык и откуда такая популярность
когда бомбит просто уходишь и все. в море полно рыбы. а что ты хотел сделать, я тебе итак скинул. конечно, комментировать не будешь
Maks
"1. Постоянные циклы это что? Оно разве не во всех языках так?" А могло бы быть так: listOf(1, 2, 3).map { it.toString() }.join(", ") а Го надо прямо пальцы сточить, чтобы такое написать
ну так напиши один раз пакет и его везде используй. Посмотри как устроен сам го. И сделай. Го сделан что бы всё было максимально строго и эффективно. По этому ты с таким сталкиваешься. Многого нет в стандартной библиотеке к чему ты привык, меньше сахара.
Vladislav
https://go.dev/play/p/5ZTecYGxf1C
это совсем не то, здесь ты положил функцию в структуру и позвал её
Alexander
а что надо? взять чужой пакет и подменить метод, который не подразумевает подмены?
Vladislav
extension method
Vladislav
во многих языках такая концепция есть
Alexander
разве нельзя? я так не делаю, ибо это треш будет: пришел на проект, там дергают какой-то метод. ушел в другой - метода нет, wtf?
Vladislav
в C#, Kotlin, Rust, JavaSript, Ruby, Python ...
Vladislav
тебе надо лист интов к строке привести?
нет, мне нужны цепочечные преобразования данных, возможно lazy
Vladislav
хотел быстро накидать себе такую либу, а не прокатило (
Alexander
Vladislav
вообще дженерики теперь позволяют подобное. так что можешь себе написать или найти чужую имплементацию
не удобно вкладывать вызов функции в вызов функции, получается нечитабельно. Но это похоже единственный тут способ
Maks
extension method
да, в шарпе есть я юзал это там. Например можно интовым типам переменных добавить метод возведения в степень или проверки его на четность. Однако го старается следовать солиду на уровне языка в некоторых моментах. И по этому если тебе нужно расширить какой то базовый класс - то ты делаешь новый тип основанный на нужно тебе типе и используешь его там где надо.
Anonymous
чел с пайтона пришел и недоволен что тут нет на все готовых либ(((
Vladislav
чел с пайтона пришел и недоволен что тут нет на все готовых либ(((
я недоволен, что многое не могу сделать к чему привык, прямо приходится страдать
Anonymous
ты на питоне писал