Andrey
сам я использую echo и то использую минимум из него, просто потому что сейчас для меня важнее понимание что происходит а не скорость разработки, по этому все делаю сам
Kirill
Коллеги, кто хочет поддержать грэймворк? Тыкните в баннер в ридми github.com/gramework/gramework )
Daniel
в который?
Kirill
который на codecov ведет?
Иногда на codecov, да
Kirill
в который?
Который sponsored by
Daniel
done
Kirill
Спасибо :3
Anton
потом, когда озолотишься и решишь сделать греймворк платным - вспомни кто тебе помог...
Илья
Не, грэйм строго бесплатный)
Using dynamic handlers, part 4 - в примере ctx *fasthttp.RequestCtx
Илья
и описание не соответствует примеру
Илья
помоему :)
Kirill
Using dynamic handlers, part 4 - в примере ctx *fasthttp.RequestCtx
А как посоветовал бы назвать?
Илья
А как посоветовал бы назвать?
ну, у тебя же там свой контекст gramework.Context
Kirill
Коллеги, кто хочет поддержать грэймворк? Тыкните в баннер в ридми github.com/gramework/gramework )
Алсо, если тыкнуть в репе https://github.com/kirillDanshin/halogenium, то деньги тоже капнут мне, и это поможет)
Kirill
ну, у тебя же там свой контекст gramework.Context
Да, но есть и поддержка fasthttp.RequestCtx
Илья
Да, но есть и поддержка fasthttp.RequestCtx
оу, тогда в import тоже добавить надо :)
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
Спасибо)
Илья
Да, просто часть с serve a string сделана через fasthttp.RequestCtx для понимания, что есть совместимость хендлеров
а "register flag "bind", that allows you to choose another ip/port that gramework should listen" это где? :)
Илья
Это в самом грэйме)
а в примере? :)
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
Дык он наоборот от нула избавляется
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
https://marcesher.com/2014/10/13/go-working-effectively-with-database-nulls/
ну вот я так и написал, но мне показалось, что это "немножно через жопу"
Alexander
и не знаю, как это скажется на производительности
Anonymous
почему опять таки не указатель?
Anonymous
указатель может быть nil
aadz
почему опять таки не указатель?
практичней сразу при получении из базы данных проверять на nil., чем потом во всех местах с этими данными париться
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
в телеге есть паблики для обсуждения алгоритмов ?
aadz
да, но сраавнивать не всегда надо. Иногда бывает надо просто передать куда-то значение определенного типа, а вот nil в функцию, которая ожидает int, не передашь
Alexander
почему гоша не придумал тернарный оператор...
Alexander
а интересно, держать в базе пустую строку на много тяжелее. чем null ?
aadz
не на много
Constantine️
https://vk.com/golang?z=video-27669892_456239059
Alexander
vim, жостко. Столько раз пробовал начать
Zloy-Dobry
Жоско vi
Zloy-Dobry
На третий день научишся выходить из него
Anonymous
:q сложно наверно = )
aadz
на третий день научишься выходить по :q! :)
Anonymous
Anonymous
А первые дня два по кнопке ребута будешь выходить:)
aadz
Зачем? Ctrl-Z прекрасно работает, выходишь в шелл и killall vim :)
Anonymous
вам смешно а як когда начал знакомство с линунс сделал rm rf / забьів указать ~
Anonymous
Ага, объясни это человеку который поломал систему, и у него нет Гуя и находится он в init 1-3)