Anonymous
и что он делать будет
Alexander
притом получается, что это странное поведение, но такие ридеры возможны, бывают и это только через опыт приходит. в обычных примерах вроде так не заморачиваются
Alexander
// When Read encounters an error or end-of-file condition after
// successfully reading n > 0 bytes, it returns the number of
// bytes read. It may return the (non-nil) error from the same call
// or return the error (and n == 0) from a subsequent call.
// An instance of this general case is that a Reader returning
// a non-zero number of bytes at the end of the input stream may
// return either err == EOF or err == nil. The next Read should
// return 0, EOF.
//
// Callers should always process the n > 0 bytes returned before
// considering the error err. Doing so correctly handles I/O errors
// that happen after reading some bytes and also both of the
// allowed EOF behaviors.
Alexander
то есть как бы, если n != 0 при любой ошибке надо обрабатывать прочитанное. даже так
Anonymous
это где такая хорошо написанная документация?
Anonymous
Alexander
https://pkg.go.dev/io#Reader
Alexander
так ты тоже самое сказал же
не, я думал, что io.EOF надо обрабатывать после обработки прочитанного, а оказывается любую ошибку
Anonymous
обрабатывать любую ошибку после конца файла?
Anonymous
я правильно понял?
Alexander
не. ты сначала делаешь что-то с buf[0:n], а только потом проверяешь ошибку и делаешь из этого вывод
Alexander
и вот одна из первых страниц по запросу "golang reader example", где при еофе сразу отбрасывается прочитанное: https://golang.cafe/blog/golang-reader-example.html
Alexander
искать io.Reader to read from a file
Anonymous
капец
Anonymous
никогда не думал что может быть такая запара
Anonymous
вот сейчас думаю
я недавно сервер стрим реализовывал и там я юзал io.EOF(типо когда все пришло закончить работу)
Anonymous
и получается
Anonymous
я мог накосячить
Alexander
в большинстве ридеров, как мне кажется, если err == io.EOF, то и n == 0
Anonymous
а тогда норм
Alexander
но спецификация не обязывает, и противоположное встречается
Anonymous
это будет печально(
Anonymous
то есть у меня может быть так, что данные пришли, но n == 0 и я получется откисаю?
Alexander
нет, у тебя может быть err == io.EOF, но n != 0 и надо вот эти n байт из буфера забрать
Anonymous
все я понял
Anonymous
капец как думаешь
Anonymous
нужно ли код переписывать?
Anonymous
в моем случае
Alexander
сам думай о целесообразности
Несин Данила
Добрый день! Кто-нибудь создавал УЗ в AD через LDAP?
Проблема: не могу создать учетную запись, если сразу хочу добавить пользователя в группу. Если же не добавлять в группу, то учетка создается. Полагаю, что что-то делаю не так?
// github.com/go-ldap/ldap v3.0.3+incompatible
// Подключение к LDAP
l, err := ldap.DialURL(fmt.Sprintf("ldap://%s:%d", s.Configs.Ldap.Host, s.Configs.Ldap.Port))
if err != nil {
fmt.Println(err)
return
}
defer l.Close()
// Используем предоставленные данные
if err := l.Bind(authLogin+"@"+s.Domain, authPass); err != nil {
fmt.Println(err)
return err
}
// Установка параметров профиля
//Задаю DN пользователя
adduser := ldap.NewAddRequest("CN="+fullname+","+etalonOU+",OU=Users,OU=Comp,DC=comp,DC=domain,DC=com", nil)
// Служебная информация
adduser.Attribute("objectClass", []string{"organizationalPerson", "person", "top", "user"})
// Без защищенного соединения (TLS) нет возможности создания включенной УЗ
adduser.Attribute("userAccountControl", []string{"514"})
// Флаг не сервисной УЗ
adduser.Attribute("businessRoles", []string{"not_service_user"})
// Флаг необходимости сменить пароль
adduser.Attribute("pwdLastSet", []string{"0"})
// Логин сотрудника
adduser.Attribute("sAMAccountName", []string{login})
adduser.Attribute("userPrincipalName", []string{login + "comp.domain.com"})
// ФИО сотрудника
adduser.Attribute("cn", []string{fullname})
adduser.Attribute("displayName", []string{fullname})
adduser.Attribute("name", []string{fullname})
adduser.Attribute("givenName", []string{fio[1]})
adduser.Attribute("sn", []string{fio[2]})
adduser.Attribute("manager", []string{managerDn})
//adduser.Attribute("member", []string{groups[1]}) // Проблема тут. В виде строки - DN глобальной группы
if err := l.Add(adduser); err != nil {
fmt.Println(err)
return err
}
/slvscm
Добрый день! Кто-нибудь создавал УЗ в AD через LDAP?
Проблема: не могу создать учетную запись, если сразу хочу добавить пользователя в группу. Если же не добавлять в группу, то учетка создается. Полагаю, что что-то делаю не так?
// github.com/go-ldap/ldap v3.0.3+incompatible
// Подключение к LDAP
l, err := ldap.DialURL(fmt.Sprintf("ldap://%s:%d", s.Configs.Ldap.Host, s.Configs.Ldap.Port))
if err != nil {
fmt.Println(err)
return
}
defer l.Close()
// Используем предоставленные данные
if err := l.Bind(authLogin+"@"+s.Domain, authPass); err != nil {
fmt.Println(err)
return err
}
// Установка параметров профиля
//Задаю DN пользователя
adduser := ldap.NewAddRequest("CN="+fullname+","+etalonOU+",OU=Users,OU=Comp,DC=comp,DC=domain,DC=com", nil)
// Служебная информация
adduser.Attribute("objectClass", []string{"organizationalPerson", "person", "top", "user"})
// Без защищенного соединения (TLS) нет возможности создания включенной УЗ
adduser.Attribute("userAccountControl", []string{"514"})
// Флаг не сервисной УЗ
adduser.Attribute("businessRoles", []string{"not_service_user"})
// Флаг необходимости сменить пароль
adduser.Attribute("pwdLastSet", []string{"0"})
// Логин сотрудника
adduser.Attribute("sAMAccountName", []string{login})
adduser.Attribute("userPrincipalName", []string{login + "comp.domain.com"})
// ФИО сотрудника
adduser.Attribute("cn", []string{fullname})
adduser.Attribute("displayName", []string{fullname})
adduser.Attribute("name", []string{fullname})
adduser.Attribute("givenName", []string{fio[1]})
adduser.Attribute("sn", []string{fio[2]})
adduser.Attribute("manager", []string{managerDn})
//adduser.Attribute("member", []string{groups[1]}) // Проблема тут. В виде строки - DN глобальной группы
if err := l.Add(adduser); err != nil {
fmt.Println(err)
return err
}
здоровый код лучше на пастбин кидать
Несин Данила
здоровый код лучше на пастбин кидать
Агась, на будущее учту)
Проблема решена следующим образом:
Нашел сообщение от пользователя https://github.com/cannatag/ldap3/issues/808#issuecomment-704109277
memberOf является сформированным списком членства в группах и редактированию не подлежит
Попробовал от обратного - добавить пользователя в группу, а не группу в пользователя:
1. Создал пользователя
2. Модифицировал группу на добавление DN нового пользователя
3. Profit!
DI
Добрый день. Ребят, такой вопрос. При вызове пустой функции golang делает его встраиваемой?
Zohidbek Mengliboyev
Hello, Guys!
I have a question:
How can I sign up/sign in with Apple in Golang?
Привет ребята!
У меня вопрос:
Как я могу зарегистрироваться / войти в систему с Apple в Golang?
Artem
Zohidbek Mengliboyev
Alexander
Alexander
Хотя это считай и будет встраиванием
Alexander
Это как 0/0
DI
DI
Мне нужно было отрубить функционал для одного из объектов в случае совпадения условий. Не хотел пихать условный код, поэтому реализовал через интерфейс
Alexander
Ассемблер тогда смотреть. Хотя, если компилятор знает, что на месте интерфейса может стоять только определённый тип, что мешает вырезать вызов?
DI
Alexander
но это все догадки. тебе нужна какая-то беседа разработчиков компилятора скорее
Anonymous
можно как-то по дефолту возвращать джсон в норм формате не прописывав в каждой ф-ции w.Header().Add("Content-Type", "application/json")?
Anonymous
типо как указать, что контент тайп будет равняться джсону по дефолту
Alexander
какой-то фреймворк?
Anonymous
нет, net/http
Anonymous
стандартная либа
Alexander
ну тогда тебе надо симитировать какой-то фреймворк, чтобы запросы шли через единый хэндлер, который добавляет в конце header
Anonymous
я подумываю через реквест проерять
Anonymous
ну это запара запар если честно
Anonymous
а хотя
Anonymous
попробую спс, но мне кажется это легче решается
Alexander
https://www.alexedwards.net/blog/making-and-using-middleware
Alexander
конечно, тут говорится о предобработчиках, как я понимаю, но ничто не мешает по подобной логике навесить постобработчики
Anonymous
то есть когда юзер получает данные с сайта надо будет постобработчик юзать?
Anonymous
я правильно понял?
Alexander
может можно два раза устанавливать один и тот же хэдер и переопределять таким образом. надо пробовать
Alexander
а зачем вообще этот контент тайп тебе? по сути он нужен краулерам, либо когда есть разные варианты обработки ответа в зависимости от типа
Anonymous
секунду
Anonymous
пример покажу
Alexander
хотя, концепция middleware подходит вполне
Anonymous
Anonymous
Anonymous
формат совершенно другой и приятен с контентом
Anonymous
в итоге я пришел к тому что буду чекать через реквест чему равняется хеадер
Anonymous
и там конвертить в джсон
Alexander
название этого фреймворка не оставляет меня равнодушным, однако
Alexander
https://www.youtube.com/watch?v=P0xAMPoO_IM
Anonymous
Привет, у меня есть проект, который предположительно немного незаконен. Кто-нибудь хочет мне с этим помочь? Даю большую награду. дм для получения дополнительной информации @Eslout
Herman
Anonymous
да вот этот скаммер
Anonymous
хорошо, что я отказался
Anonymous
сидел бы сейчас
Anonymous
первый раз слышу
чекну спс
🔥