Mikalai
вот так правильно:
func makeQuery(table string, myMap map[string]interface{}) (string, []interface{}) {
keys := make([]string, 0, len(myMap))
vals := make([]interface{}, 0, len(myMap))
for key, val := range myMap {
keys = append(keys, key)
vals = append(vals, val)
}
placeholders := strings.Repeat("?,", len(keys))
return fmt.Sprintf(
"INSERT INTO %s (%s) VALUES(%s)",
table,
strings.Join(keys, ", "),
placeholders[:len(placeholders)-1],
),
vals
}
И тут нам прилетает sql-иньекция
Daniel
а я не говорил, что так надо делать :)
Konstantin
да мапу валидатором обработать и пойдет)
Daniel
нет
Daniel
реально - нет
Daniel
динамический запрос, основанный на внешних данных - это путь прямо в ад
Konstantin
построитель запросов не отвечает за данные)
Mikalai
А вообще какой в этом смысл, список колонок в таблице обычно ведь редко меняется
Daniel
да коллега не может от php отвыкнуть, хочет написать себе нанопхп
Konstantin
короче если это все написать в vim то все ок будет 😂
Konstantin
ну а если в gogland preview edition. то все отвественность на тебе))
Konstantin
это я сегодня набрался, извините)
Kirill
Ловите наркомана!
Sergey
Sergey
Вообще, если прогаешь в vim, то там по-умолчанию всегда хорошо получается!
Roman
Особенно бибикать и все ломать 😂
Givi
Тааак....
Alexander
Alexander
Konstantin
panic()
Anonymous
panic()
main.go:1: missing argument to panic
Konstantin
😄
Ilya
Konstantin
https://highloadcup.ru/rating/
никто тут не участвует? что-то гошники отстают немножко, нужно прибавить)
Anonymous
Chebyrash
Egor
народ всем привет
затык
слушаю на go проксированный трафик через порт, хочу распарсить то что приходит на порт, читаю всё в []bytes виде, при простом конверте в стрингу приведением типов выходит шляпа
по идее там типичные HTTP. как можно это сделать без геморроя?
Anonymous
может быть шифрованный трафик?
Egor
нет, сервер мой и обработка респонса тоже.
я по сути стою в середине
там всё странного вида с аски символами, среди спецсимволов нужный текст который в нормальном UTF-8
Egor
Egor
хочу распарсить ответ []bytes который видно на скрине в структуру
Egor
если чето такое можно вертеть через bufio/url/http модули, то наставьте куда копать хотя бы)
Siarhei
у тебя там еще на странице лишнее печатается?
Siarhei
а дальше https://github.com/PuerkitoBio/goquery
Siarhei
если я правильно понял
Egor
если об этом речь
Siarhei
хм...
Anonymous
Siarhei
а DOCUMENT_ROOT и прочие прелести? откуда они берутся?
Siarhei
на какой-то var_dump похоже
Egor
схема req —> nginx —> go_tool —> php-fpm —> page.php
Egor
go_tool я принимаю запрос по сокету в виде []bytes, вывожу его, хатем передаю в php-fpm
Chebyrash
Siarhei
я вот тоже не пойму
Siarhei
либо одно, либо другое уже
Chebyrash
Anonymous
и nginx зачем в вашем случае? )
Egor
могу заверить, на рабочеспособность не влияет никак - оно работает)
просто не могу структурировать данные из []bytes
Anonymous
что-то мне подсказывает, что вашу картину nginx портит. Уверены, что он проксирует корректные данные?
Chebyrash
Egor
нее..
входная точка - в сокете лежит проксированный nginx-ом запрос
я его читаю в []bytes через .Read() и мне приходит то что выше можно посмотреть
Egor
по факту там лежит HTTP запрос в виде []bytes и респонс на него в том же виде
Egor
задача привести в страктовый вид и разбить хэдеры, бади и тд
Aleksandr
Egor
может быть любым - ограничивается только HTTP протоколом
Aleksandr
Aleksandr
ты хранишь в каком-то неведомом формате. просишь нас помочь тебе распарсить этот неведомый формат. мы не знаем формат. ты знаешь?
Aleksandr
Dmitriy 😎
Привет! Ребят, сможете подсказать?
Использую protobuf через grpc. Задался вопросом как идентифицировать сессию клиента между запросами, пока что только в голове решение – token прописать в каждом request message
Есть ли у кого-нибудь другое решение?
Egor
Egor
Egor
request если расставить нормально табуляции и тд выглядит вот так
Egor
Egor
вопрос как этот хлам с кривой аски превращать в структуру по полям конкретным?
Aleksandr
Egor
Anonymous
Заголовки из nginx должны через x-forwarder передаваться
Anonymous
Включено у тебя?
Egor
Egor
угу
Aleksandr
как бы вот
на последнем скрине видно, что это контрольные символы, а сам текст заголовков и тела корректен в общем-то.
опять же это не http, который тебе известен, а попытка хранения nginx запроса-ответа (запроса кстати на скринах я не вижу - только ответ и серверные переменные)
Aleksandr
в общем это какая0то nginx-фича, с которой тебе надо разбираться самому, и в целом, кажется, по твоему описанию, это не то что тебе нужно
Aleksandr
вот как выглядит http-request в том http, который мы знаем:
GET /
Host: [host]
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
это не то, что на твоих скринах
Egor