Несин Данила
Всем привет! У меня возник архитектурный вопрос - выполняя определенные операции я могу подключаться к LDAP для выполнения различных операций.
Для каждой операции я открываю новое подключение, закрывая его по завершении.
Но так же возможно передавать функциям уже открытые подключения с целями переиспользования объектов - состояния гонки не будет, в любом случае операции выполняются последовательно.
Как лучше и чем - открывать новые подключения к LDAP, для коротких операций (да и вообще к сервисам) или переиспользовать уже имеющиеся?
Несин Данила
Уточню, не на столько узким.
Операция с Web-морды - Создать пользователя.
В рамках обработки api запроса:
Открыл подключение
Запросил эталон
Создал пользователя
Навесил группы
Закрыл подключение
Сейчас каждая из операций открывает новое подключение. В таком случае переиспользование даст преимущество?
Несин Данила
Ну в плане создания пользователя - критично, но отвечает быстро
Sergey
Null
Как преобразовать строку в целочисленный тип в Go?
https://uproger.com/kak-preobrazovat-stroku-v-czelochislennyj-tip-v-go/
@Golang_google
🅞leksiy
Мне тут стало интересно, тут же много разрабов новичков. На сколько дженерики вообще ломают вам мозг? Ну вот хотя бы в этом примере?
https://gotipplay.golang.org/p/nc5G75Ol2ol
🅞leksiy
Ну или кто-то может, не заглядывая в верхнюю ссылку поправить код здесь, чтобы он заработал? https://gotipplay.golang.org/p/FWPULhWTKSe
Alexander
Alexander
разгадываешь головоломку как будто, но за этим нет какого-то смысла по итогу
🅞leksiy
Смысл есть
Ig
Alexander
да нет там смысла, чисто напряги мозг
Alexander
И вообще фейл из-за этого, если принтф не станет на дженериках сам
func (c Car[S]) Move(meters S) {
fmt.Printf("%s moved %v meters\n", c.Name, meters)
}
Alexander
с таким же успехом можно interface{} использовать
Alexander
или Subtractable
🅞leksiy
🅞leksiy
Просто многие воспринимают дженерики как способ написать общую функцию.
🅞leksiy
Не понимая, что там на много все шире
Alexander
Alexander
полезный опыт
🅞leksiy
🅞leksiy
а например? где омжно почитать про это?
Например, у тебя есть дженерик тип A (с методами), эти методы могут содержать параметры этого типа, а так-же других дженериков, и типов, основанные одновременно на том и том 🤪 И вот нужно объявить интерфейс для данного типа A, чтобы заюзать как констреинт. И потом использовать в коде. Это реально может поломать
Anonymous
Ivan
начинал с джавы , так вот их <? extendet SomeType> слегка напрягали) сейчас вроде полегче читается)
🅞leksiy
а есть какой цикл статей или книжека чисто по дженерикам?)
Я толковой книги нигде не видел, а статей хватает, но 99% из них - треш, описывающий, как переделать функцию для поиска в срезе.
Но вообще есть с примерами кода, типа таких: https://blog.walkergriggs.com/2021/12/15/learning_go_generics_with_aoc/
🅞leksiy
https://gotipplay.golang.org/p/mbrOoHYipXf
Если кому-то интересно по теме, пример более рабочий. Но и без интерфейсов, попроще
Ivan
пока что только общие структуры на голову приходят. я написал связанный список. на его основе очередь с возможностью удаления. и пока все
Ivan
type Queue[K comparable, V any] struct {
l *list.List[entry[K, V]]
v map[K]*list.Element[entry[K, V]]
}
Ivan
еще бы найти список того, какие структуры будут в стандартой либе. что бы не писать свои структуры на жинериках)
Alexander
1
Alexander
или Subtractable
Alexander
ну union-тип и тип any - тут разница прям пропасть
ASP
всем привет,скачал установил postgres но не могу подключить его
в ide,вбиваю username - postgres,пароль postrges всплывает ошибка The specified database user/password combination is rejected: [28P01] ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (по паролю)
🅞leksiy
🅞leksiy
ASP
🅞leksiy
Ubuntu у меня
Уже лучше, а как устанавливал пароль постгреса?
🅞leksiy
$ sudo -u postgres psql
ALTER USER postgres PASSWORD 'myPassword';
Айрат
🅞leksiy
А информации сложно добиться
🅞leksiy
Хоть ОС выяснили)
Alexander
это весело в начале решать головоломки ради головоломок, но тут хочется плеваться
Alexander
потому что опять же все бы решилось интерфейсом
Alexander
ровно то же самое по производительности бы вышло
Alexander
не надо тысячи строк
Alexander
смысл функции в низу вообще не понятен
Alexander
зачем еще исходное оборачивать в какую-то непонятную функцию
🅞leksiy
🅞leksiy
В ней смысла нет
🅞leksiy
Но она на столько простая, что я ничего не убирал, и так все ясно
🅞leksiy
Вобщем автор вопроса скинул ту ссылку, которая постом ниже, не работающую
🅞leksiy
Alexander
такие вопросы возникают
🅞leksiy
Априори не должно делать понимание труднее)
Alexander
не знаю, все обучающие материалы пытаются создать что-то осмысленное, тут же смысла ноль целых ноль десятых. и они неспроста пытаются хоть какой-то смысл изобразить
🅞leksiy
Это не обучающие материалы, я же писал
🅞leksiy
Это реальная задача чудика, не мне судить)
Alexander
ок. пример из реальности тоже что-то делает, да не всегда очевидно, но что-то. ты замотивирован разобраться, понимаешь, что криво или просто сложно, но вот так чего-то добились. а тут чисто головоломка
🅞leksiy
Когда скидываешь код, упрощаешь его. Возможно он упрощен до такой степени, что метод и функция обертка урезаны до таких
Alexander
я не понимаю, что эта функция хотела сделать, но я бы допустим какой-то объект Position внутри Car засунул, который бы как раз зависел от параметра, и который бы менялся через Move
🅞leksiy
Alexander
и тип бы сузил до float32, float64 - тогда было бы понятно, что мы можем пожертвовать точностью, например тащемта
🅞leksiy
Ладно, сложновато дискутировать, зрение еще не до конца восстановилось) Еле читаю и пишу)
Alexander
но это бы тоже был пример высосанный из пальца
Alexander
ок =)
ASP
Alexander
Как это сделать?
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
Ivan
я только подсказал, а возвращает автор кода)
Хайти🏴
тоже верно)
Krestina
Ребят, помогите найти RTB эксперта. Стек гоу, + планируем кликхаус. Подробности в личку, плиз