Andrey
сам я использую echo и то использую минимум из него, просто потому что сейчас для меня важнее понимание что происходит а не скорость разработки, по этому все делаю сам
Kirill
Коллеги, кто хочет поддержать грэймворк? Тыкните в баннер в ридми github.com/gramework/gramework )
Daniel
в который?
Anton
Kirill
Daniel
done
Anton
Kirill
Спасибо :3
Anton
потом, когда озолотишься и решишь сделать греймворк платным - вспомни кто тебе помог...
Kirill
Илья
и описание не соответствует примеру
Илья
помоему :)
Kirill
Kirill
Илья
Kirill
Oops
Kirill
Спасибо
Илья
и описание там "The example below will serve a string and register flag "bind", that allows you to choose another ip/port that gramework should listen", а в примере использование fasthttp RequestCtx :)
Kirill
Да, просто часть с serve a string сделана через fasthttp.RequestCtx для понимания, что есть совместимость хендлеров
Kirill
Спасибо)
Kirill
Илья
Kirill
а в примере? :)
При запуске проги можно сделать
./appName -bind :8080
Alexander
а кто как пишет обход NULLов из базы данных?
1. field1 NOT NULL DEFAULT "";
2. IFNULL(field1, "")
3. struct {field1 sql.NullString}
4. Что там еще можно выдумать?
Vasily
sql.NullString и комапании
Vasily
или указатели
Anonymous
Дык он наоборот от нула избавляется
✙ Egor ✙
aadz
string([]byte(""))
string([]byte(nil))
Не? Идея в том, что такой кастинг возвращает пустую строку
aadz
или что значит обход NULLов из базы данных?
aadz
https://play.golang.org/p/nivY1yBK3x
aadz
https://github.com/guregu/null/blob/master/string.go
Alexander
ну я пишу структуру со строгой типизацией данных. В неё загоняются значения из базы данных, где поле наловое. В какой то момент попадается NULL, и всё рушится.
aadz
а в структуре присутствет тип []byte?
Alexander
ну я могу сделать, если это выход
Alexander
вместо string написать []byte?
Alexander
и там окажется nil, если в базе null, да?
aadz
Ну, из базы-то строковые типы, вроде как []byte и приходят. Просто при получении их надо сразу обрабатывать в виде string(), чтобы получать пустую строку при значении nil
Alexander
спасибо, попробую
aadz
В общем, мы получаем одно и то же в итоге из
fmt.Println(string([]byte("")))
fmt.Println(string([]byte(nil)))
это будет пустая строка
Alexander
а с интами как?
aadz
https://marcesher.com/2014/10/13/go-working-effectively-with-database-nulls/
aadz
sql.NullInt64, или руками проверять на nil :(
aadz
Но sql.NullInt64 не так эффективно по памяти и по работе с ним в дальнейшем. Это структура:
type NullInt64 struct {
Int64 int64
Valid bool // Valid is true if Int64 is not NULL
}
так что может иметь смысл сразу при получении int проверять, что там, и решать что хранить в итоге самому.
aadz
И, конечно, надо отрывать руки тем, кто делает базы и приложения так, что потом приходится страдать. не понимая того, то NULL в SQL - это не только отсутствие данных, но еще и отсутствие типа данных :(
Alexander
и не знаю, как это скажется на производительности
Anonymous
почему опять таки не указатель?
Anonymous
указатель может быть nil
Alexander
Anonymous
можно пример?
type Hz struct {
NullableIntField *int
NullableInt64Field *int64
NullableStringField *string
// any type pointer field
}
v := Hz{}
if v.NullableIntField == nil {
// Это null
} else {
// Это  int
}
Alexander
т.е. прежде чем воспользоваться полем, мне надо будет во всех местах писать if v.NullableIntField == nil {
// Это null
} else {
// Это int
}
?
aadz
да
Alexander
помему тоже не красиво )
Constantine️
Anonymous
в телеге есть паблики для обсуждения алгоритмов ?
Anonymous
aadz
да, но сраавнивать не всегда надо. Иногда бывает надо просто передать куда-то значение определенного типа, а вот nil в функцию, которая ожидает int, не передашь
Alexander
почему гоша не придумал тернарный оператор...
Kirill
Alexander
а интересно, держать в базе пустую строку на много тяжелее. чем null ?
aadz
не на много
Constantine️
https://vk.com/golang?z=video-27669892_456239059
Alexander
vim, жостко. Столько раз пробовал начать
Zloy-Dobry
Zloy-Dobry
Жоско vi
Zloy-Dobry
На третий день научишся выходить из него
Anonymous
:q сложно наверно = )
aadz
на третий день научишься выходить по
:q!
:)
Anonymous
Anonymous
А первые дня два по кнопке ребута будешь выходить:)
aadz
Зачем? Ctrl-Z прекрасно работает, выходишь в шелл и killall vim :)
Anonymous
вам смешно а як когда начал знакомство с линунс сделал
rm rf / забьів указать ~
Anonymous
Ага, объясни это человеку который поломал систему, и у него нет Гуя и находится он в init 1-3)