Dk
Глупый вопрос, наверное. У меня браузер два раза запрос к серверу делает. Как это починить?
Pavel
Sam
Он иконку запрашивает наверно
Pavel
Я вангую, что это префлайт запрос для cors.
Dk
Ну всё просто. Я сделал хендлер http, сделал вывод пути и метода. В итоге при каждом запросе у меня печатается
GET /path
GET /path
Aleksandr
Pavel
Ну если все просто, то не делай два запроса. Делов то.
Igor
Ребята, как в gin-gonic заставить работать binding:"required" ?
Ilya
а никому случайно не попадался in-memory PostgreSQL?
snip
Ilya
типа https://github.com/yandex-qatools/postgresql-embedded но гошный
Anonymous
вопрос вызов buffio.scanner.Scan() блокирующий?
Ilya
ну да, это джавная штучка
Ilya
я для юнит-тестов ищу способ работать с базой
Ilya
хватало sqlite пока не попался специфически постресовский синтаксис
Nikita
Dk
все просто... ты посмотри developers tools в браузере и покажи нам что за запросы
func main() {
http.HandleFunc("/", handlf)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handlf(w http.ResponseWriter, r *http.Request) {
log.Println(r.Method, r.URL.Path)
}
всё убрал, оставил это. Кажется, я по глупости воткнул пермамент редирект и браузер теперь редирект делает из кэша диска.
Dk
Dk
Буду знать, спасибо, @zelenin
Aleksandr
Редирект из кэша.
Ilya
doc
Ilya
и?
Делать тест в транзакции и потом сбрасывать? Возможно это вариант
Ilya
Хотя мне бы тестовые данные а не реальную базу
doc
тестовые данные уже в коде теста надо заливать, а не заранее
Ilya
Так если у меня транзакция над реальной базой то там уже есть данные
Ilya
Или делать truncate в init?
Ilya
Как то это того...
doc
doc
для тестов отдельно схему создавай и дропай по окончании тестов
Ilya
Ну мне нужна чистая база в которую я положу тестовые данные
Ilya
doc
да, новые создавай, накатывай таблицы, и после тестов дропай
doc
главное, чтобы тесты были независимые
Ilya
Забыл про схемы)
doc
каждый создавал свои данные, проходил как один так и со всеми вместе, успешность тестов не зависела от порядка прохождения тестов и тд
doc
тогда это хорошие тесты)
Ilya
Согласен)
Pawel
если надо адрес первого элемента в слайсе, так можно - uintptr(unsafe.Pointer(&b[0])) ?
Pawel
Pawel
header := *(*reflect.SliceHeader)(unsafe.Pointer(&b)) ?
Nikita
Pawel
Artem
Кто нить юзает Pgx? я вот читал мол там на каждый запрос сначала отсылается prepared statement. То есть судя по всему от SQL Injections я буду защищен и мне можно вообще забить на почти все првоерки?
Nikita
Artem
Artem
а имя таблицы можно так передать? ну типа Select * from $1 where … ?
Artem
ну да. prepare statements
doc
Aleksandr
Artem
Shahzod
DROP TABLE tableName;
Artem
ну вопрос о том и был. Спасут ли плейсхолдеры и prepared statement от такого
Aleksandr
от какого?
Willy
Посоветуйте, что почитать для углубленного изучения Go?
Там, reflect, unsafe, ...
Artem
от параметров вида “; drop table users; "
Aleksandr
да
Aleksandr
то есть это именно для этого и сделано
Shahzod
Никогда не доверять пользовательским данным! Они всегда дольжны проходить через валидаторы. Сергей прав
Artem
Nikita
Shahzod
Artem
окей. есть какие нить валидаторы которые как аннотации к колбекам сервера запиливаются? А то я кастомный написал и он получился гавно с правилами вида const ListEventsIdRule = "request_id,any,nospace,minl=1,maxl=172,req"
doc
валидаторы проверят как минимум тип, отсекут злонамеренно сформированные запросы с данными на граничных условиях - NaN, огромные числа/строки, битые даты
Lex
а есть для Go типа <другой язык> right way? Или вот это оно: https://golang.org/doc/effective_go.html#introduction ?
Artem
Lex
ясно ,спасибо
Michael
Привет всем. Наткнулся на один интересный случай. Я уже понял, почему так происходит, но всегда думал, что case в select не может залочиться и всегда выполнится default. Оказалось нужно внимательнее доку читать
Думаю будет интересно посмотреть:
https://play.golang.org/p/vblaXUZFvXY
Daniel
так залочился не селект
Daniel
залочилось то чтение из канала, которое не в селекте