Oleksii
Между F() и f() есть разница
Nikita
я уже понял, я про то, что есть другой "проект" там приходилось экспортировать, а теперь выясняется, что это не нужно
Oleksii
Все примеры, что ты скидывал, в package main
Oleksii
И все окей :)
Oleksii
Возможно, ты что-то не так делал
Alexander
Anonymous
А как надо правильно делать?
Предположу:
Цикл for по мапе, делающий insert для каждого значения. Обернуть красиво в одну транзакцию - и всё будет ок.
Alexander
5 полей - 5 инсертов???
Alexander
Кстати, вышеописанным методом инъекция не прошла. Так что оставлю его пока.
Alexander
вот так правильно:
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
}
👍
Anonymous
Alexander
Наверное и работать будет быстрее
Anonymous
И с помощью всяких ORM можно будет красиво вставлять сразу целиком записи
Alexander
не люблю я орм. Описать там джоины - сума сойдёшь
Alexey
JOIN'ы можно и на SQL'е писать
Alexey
Вообще, ORM'ы, как правило, не забирают возможность использовать SQL
Alexey
Но убирают необходимость делать повторяющиеся действия руками каждый раз, типа rows.Scan(…правильное количество аргументов в нужном порядке…) или defer rows.Close()
Stepan
Orm есть хорошо
Dmitriy
Все доброго времени суток. У меня вопрос следующего характера. Возникла проблема с отпрвкой data.json на web api. В data я передаю user пароль и дальше как бы получаю всю нужную информацию, на питоне у меня все четка работает с urllib, на go отдает ошибку о неправильной auth-id или пароле пользователя. Возможно я что то делаю не так.
package main
import (
"fmt"
"net/http"
"bytes"
"io/ioutil"
"encoding/json"
)
type som struct{
Aut int json:"auth-id"
P string json:"auth-password"
RO int json:"rows-per-page"
}
func main(){
url := "https://api.cloudns.net/dns/get-pages-count.json"
fmt.Println("URL:>", url)
data := som{123,"password",10}
jsonStr,err := json.Marshal(data)
req, err := http.Post(url,"application/json", bytes.NewBuffer(jsonStr))
if err != nil {
panic(err)
}
defer req.Body.Close()
fmt.Println("response Status:", req.Status)
fmt.Println("response Headers:", req.Header)
body, _ := ioutil.ReadAll(req.Body)
fmt.Println("response Body:", string(body))
}
Anonymous
какой json посылается? надо вывести и все станет ясно
Dmitriy
{"auth-id":123,"auth-password":"password","rows-per-page":10}
engelbart
После rows запятой нет
Dmitriy
engelbart
Ой, и не могло помочь
engelbart
Я глупость сказал
Dmitriy
Ну я попробовал... малоли;)
Anton
а покажи код на ру?
Dmitriy
def listPageClouDNS():
data = {"auth-id" : authId,
"auth-password" : authPassword,
"rows-per-page" : 100,
}
enc_data = urllib.parse.urlencode(data).encode('utf-8')
page = urllib.request.urlopen("https://api.cloudns.net/dns/get-pages-count.json", enc_data)
x = eval(page.read())
s = json.dumps(x)
#print(x['status'], '! ', x['statusDescription'], sep='')
return(s)
Anton
urlencode != json в post body
Anton
и код бы обрамлять в трех "`"
Ilya
x = eval(page.read())
Anton
из раздела: не знаешь как помочь - дое*ись до текста)
Ilya
Б - безопасность
Anton
в варианте на ру ты получаешь что-то типа:
GET: https://api.cloudns.net/dns/get-pages-count.json?auth-id=0&auth-password=password&rows-per-page=10
а в варианте на го у тебя:
POST: https://api.cloudns.net/dns/get-pages-count.json где ты в request body кидаешь свой json
Dmitriy
Anton
смотри в сторону https://golang.org/pkg/net/url/#Values.Encode
Dmitrii
Dmitryi
type som struct{
Aut int `"json":"auth-id"`
P string `"json":"auth-password"`
RO int `"json":"rows-per-page"`
}
Так пробовали ?
Dmitriy
Anton
и не пугайся, в песочнице сам запрос nil возвращает, потому что там http наружку делать нельзя
Dmitriy / დიმიტრი
а может кто порекомендует хорошую тулзу для стресс тестирования? не обязательно на Go, но обязательна поддержка websocket протокола
Dmitriy / დიმიტრი
artillery.io уже пробовал, но там вообще почти нифига нет
Ilya
Ivan
Yandex.Tank?
Anton
gatling
Vladimir
yandex.tank, pandora, gatling, jmeter, vegeta
Vladimir
еще кто-то был
Vladimir
я все время забываю
Anton
Apache benchmark
Anton
Простите, оно не факт что в веб сокеты умеет. Я вопросы читать не умею
Alex
Привет народ, кто может мой код на гитхабе глянуть. Пишу недавно, хочется услышать критику и может где-что подсказать как лучше сделать
Aleksandr
ссылку кидай - кто-то обязательно глянет
Anonymous
Мерль
#подкаст
http://golangshow.com/online/
Nikita
Yura
Dratuti
Valentin
я бы не отказался от ссылки на саундклауд
Valentin
а, тунец есть -)
Anonymous
Вопрос тем кто использует GIN
// Upload the file to specific dst.
Имеется ввиду директория для сохранения?
Anonymous
Nikolay
Да
Anonymous
Nikolay
Ошибки пишет?
Nikolay
Путь в каком виде указал?
Anonymous
Подскажите пожалуйста, как еще можно расширения файла убрать
Например имеем name.zip как привести его к виду name
Anonymous
Anonymous
Anonymous
Интересно, что будет, если кинуть гуглу PR с добавлением функции получения имени файла. Возьмут или нет?
Slava
ммм
Slava
но зачем?
Anonymous
Еще один немного странный вопрос, как вы ищете проекты на github, например хочу посмотреть на репозитории людей которые пишут на go
Diasko
Подскажите может кто нибудь встречал для го плагены на подобии Yii2-debug и laravel-debugbar
Максим
Максим