@proGO

Страница 1366 из 1674
Nikolay
15.04.2018
09:28:15
посоны, а есть где почитать, почему и как го игнорирует x86_64 конвенцию при вызовах функций?

то есть не кладет аргументы в регистры

m
15.04.2018
09:34:20
Оно иначе просто думает при компиляции. смотри pprof и потом disasm .

есть ещё где-то статьи по гошнуму ассемблеру. Там описано, как аргументы передаются.

Google
Nikolay
15.04.2018
09:35:29
вроде есть еще разница между gccgo и go

Max
15.04.2018
10:03:25
Господа вопрос от новичка, у меня есть база данных RethinkDB с драйвером gorethink.v4, есть подобного рода код type Users struct { Id string `gorethink:"id,omitempty"` Name string `gorethink:"user_name" json:"name"` Location UserLocation `gorethink:"location" ` } type UserLocation struct { lat float64 `gorethink:"lat" json:"lat"` lon float64 `gorethink:"lon" json:"lon"` } func GetAllUsers(db *Conn.DataBase) func(ctx echo.Context) error { return func(ctx echo.Context) error { var users []Users get, err := r.Table("users")Run(db.Connect) if err != nil{ fmt.Println(err) } get.All(&users) return ctx.JSON(http.StatusOK, &users) } } проблема в том, что после того как я передаю данные с бд в структуру (`get.All(&users)`), там есть вложенная структура Location UserLocation gorethink:"location" и соответственно она заполняется пустыми значениями, как этого избежать? сейчас ответ выглядит примерно так: { "created": Sun Apr 15 2018 16:09:35 GMT+08:00 , "id": "011bbb51-b308-4682-8b43-516c6735efb2" , "name": "tst" , "location": { "lat": 55.7494733 , "lon": 37.35232 } , } { "created": Sat Apr 14 2018 15:05:22 GMT+08:00 , "id": "3c44ae61-b250-43eb-8f7d-450abd6e4035" , "name": "tst2" , "created": Sun Apr 15 2018 16:09:35 GMT+08:00 , "id": "011bbb51-b308-4682-8b43-516c6735efb2" , "name": "tst" , "location": { "lat": 0.0 , "lon": 0.0 } , } а я бы хотел чтобы если запись о данном поле отсутствует в бд, это поле пропускалось бы и в ответе

yuriy
15.04.2018
10:11:07
Господа вопрос от новичка, у меня есть база данных RethinkDB с драйвером gorethink.v4, есть подобного рода код type Users struct { Id string `gorethink:"id,omitempty"` Name string `gorethink:"user_name" json:"name"` Location UserLocation `gorethink:"location" ` } type UserLocation struct { lat float64 `gorethink:"lat" json:"lat"` lon float64 `gorethink:"lon" json:"lon"` } func GetAllUsers(db *Conn.DataBase) func(ctx echo.Context) error { return func(ctx echo.Context) error { var users []Users get, err := r.Table("users")Run(db.Connect) if err != nil{ fmt.Println(err) } get.All(&users) return ctx.JSON(http.StatusOK, &users) } } проблема в том, что после того как я передаю данные с бд в структуру (`get.All(&users)`), там есть вложенная структура Location UserLocation gorethink:"location" и соответственно она заполняется пустыми значениями, как этого избежать? сейчас ответ выглядит примерно так: { "created": Sun Apr 15 2018 16:09:35 GMT+08:00 , "id": "011bbb51-b308-4682-8b43-516c6735efb2" , "name": "tst" , "location": { "lat": 55.7494733 , "lon": 37.35232 } , } { "created": Sat Apr 14 2018 15:05:22 GMT+08:00 , "id": "3c44ae61-b250-43eb-8f7d-450abd6e4035" , "name": "tst2" , "created": Sun Apr 15 2018 16:09:35 GMT+08:00 , "id": "011bbb51-b308-4682-8b43-516c6735efb2" , "name": "tst" , "location": { "lat": 0.0 , "lon": 0.0 } , } а я бы хотел чтобы если запись о данном поле отсутствует в бд, это поле пропускалось бы и в ответе
Location UserLocation gorethink:"location" Location *UserLocation gorethink:"location" попробуй так

оно не может пропускаться потому что оно есть как значение когда get.All создаст тебе юзера он и создаст тебе локейшен автоматически

Max
15.04.2018
10:14:25
yuriy
15.04.2018
10:15:18
оно заполняет ту структуру, что ты даешь

Max
15.04.2018
10:15:40
Roman
15.04.2018
10:38:01
вебпак на го переписать
не выйдет, другая экосистема

https://github.com/ulule/deepcopier
можно конечно и так, но я не уверен что это будет работать с неэкспортируемыми полями

Google
Daniel
15.04.2018
10:52:46
*car := *oldCar car.speed = 22
это надо быть уверенным, что в недрах структуры нет указателей

yuriy
15.04.2018
10:52:49
но если в структуре указатели то все

да

будешь неделю искать почему наприме у всех машинок одно ускорение, а скорость разная)

Roman
15.04.2018
10:53:25
*car := *oldCar car.speed = 22
не сработает в случае если в полях есть слайсы, мапы, вложенные структуры или указатели

yuriy
15.04.2018
10:53:50
сработает) смотря чего ты хочешь может кто-то хочет шейрить данные через указатели

ownerОв например и т.п.

Roman
15.04.2018
10:54:13
а от мутабельности спасает только deep copy

yuriy
15.04.2018
10:54:34
да, только дип копи

Roman
15.04.2018
10:54:36
которую в Go к сожалению приходится писать ручками

Daniel
15.04.2018
10:55:06
потому, что общий случай deep copy нереализуем в принципе

yuriy
15.04.2018
10:55:19
с учетом цикличных структур да

Roman
15.04.2018
10:55:19
но я думаю это далеко не только в Go так, и в JS и C++ и во всех где есть указатели и reference types

в JS вообще извращаются, сериализируют в JSON а потом из JSON парсят сразу для создания deep copy, что конечно-же может повесить процесс если структура цикличная и макс. вложенность не указана

Daniel
15.04.2018
10:59:43
ну - как есть

yuriy
15.04.2018
11:02:50
мне кажется иммутабельность это не про го совсем разработчики го потратили десятки лет чтобы мы шейрили память с помощью горутин

Daniel
15.04.2018
11:03:55
70%

Google
Savely
15.04.2018
11:04:05
70%
ток хотел сказать

в JS всё было в этих неумелых deep copy

Roman
15.04.2018
11:08:15
мне кажется иммутабельность это не про го совсем разработчики го потратили десятки лет чтобы мы шейрили память с помощью горутин
однако иммутабельность очень бы не помешала по принципу const в C++ например: type Car struct { drivers []Driver } func (c *Car) Drivers() const []Driver { return c.drivers } ///////////////// func main() { myCar := NewCar() myDrivers := myCar.Drivers() // compile time error: cannot mutate immutable object myDrivers[0] = NewDriver() // compile time error: cannot mutate immutable object myDrivers[0].SetName("Leerooyyy Jenkins") }

m
15.04.2018
11:09:35
webpack..
его в код вставить можно? Этот можно. Очень удобно. При старте вебсервера даёшь странички, они их сжимает, потом в gzip и вот готовая для отдача бинарная переменная.

Roman
15.04.2018
11:11:53
однако иммутабельность очень бы не помешала по принципу const в C++ например: type Car struct { drivers []Driver } func (c *Car) Drivers() const []Driver { return c.drivers } ///////////////// func main() { myCar := NewCar() myDrivers := myCar.Drivers() // compile time error: cannot mutate immutable object myDrivers[0] = NewDriver() // compile time error: cannot mutate immutable object myDrivers[0].SetName("Leerooyyy Jenkins") }
т.е. если метод const, тогда в нём не должно быть не-const выражений и он может спокойно использоваться на иммутабельных объектах. А вот вызов не-const методов в const контексте должен бросать compile time ошибку

безопасность, удобность, и не думаю что сильно замедлид компилятор

Daniel
15.04.2018
11:17:26
мы же не про кресты, а про иммутабельные параметры

yuriy
15.04.2018
11:17:42
а я про слово const

Daniel
15.04.2018
11:17:47
которые ключевым словом const обозначаются в сигнатуре

yuriy
15.04.2018
11:19:40
ну как бы такая иммутабельность в многоядерных система мало что гарантирует я могу не мутировать const а просто его читать и все равно получать рейс кондишен

Roman
15.04.2018
11:19:57
или помешала, как посмотреть, я вот не кодил на крестах давненько, и как-то сложна
суть в том, что в нынешнем Go иммутабельность достигается только deep копированием, это compile time но не runtime effective. Иммутабельность которую проверяет компилятор - runtime effective, но не compile time. безопасность и скоросоть против скорости компиляции

Daniel
15.04.2018
11:20:56
ну как бы такая иммутабельность в многоядерных система мало что гарантирует я могу не мутировать const а просто его читать и все равно получать рейс кондишен
а мы не рантайм, а компайл-тайм проверок хотим. собственно, хотим уверенно закрыть вопрос о нечаянной модификации структуры, переданной по указателю

Roman
15.04.2018
11:25:11
а какой юз кейс для таких объектов был бы в го?
библиотеки например писать fool proof.. вот в моём конкретно случае с https://github.com/qbeon/webwire-go, когда передаю слайс подключённых к серверу клиентов хочется передать иммутабельный лист. ибо: // get list of currently connected clients clients := server.ConnectedClients() // do some magic written by someone else thirdPartyFunction(clients) если где-то в недрах thirdPartyFunction мутирует список - это сломает библиотеку и приведёт к undefined behavior сервера. Поэтому мне приходится копировать весь слайс при передаче его пользователю библиотеки для обеспечения безопасности, что не эффективно в рантайме. От этого мог бы защищать компилятор, но... Go же у нас "прагматичный язык", нам же не нужны такие удобности)))

yuriy
15.04.2018
11:25:17
да, это прикольная тема в плане оптимизации памяти свой пакейдж может возвращать свои рабочие указатели

Google
yuriy
15.04.2018
11:25:18
ага

Yaroslav
15.04.2018
11:45:40
Если кому-то нужен web-дизайнер, то пишите

serbernar
15.04.2018
12:05:19
А если не нужен, то не пишите

Никита
15.04.2018
12:08:07
?

Admin
ERROR: S client not available

MrSmeet
15.04.2018
12:09:21
ребят эт вопрос такой

А зачем мне гоу учить вот чет думаю че можно учить смотрю на расты лиспы и тд и думаю что поучить расскажите какие бонусы я получу если начну писать во славу хомяка

Никита
15.04.2018
12:11:42
Если не знаешь зачем — не учи

yuriy
15.04.2018
12:11:55
я так понимаю тут курсы повышения мотивации нужны

Александр
15.04.2018
12:16:24
зарплата в среднем как middle+ php

реактивщики получают больше

yuriy
15.04.2018
12:17:07
а кто-то подавался на нормальные хайлоад позиции заграницу? с 100k+ / год?

в снг да небольшие зп

eugene
15.04.2018
12:46:07
concurrency. Go уникален в плане конкуррентного, многоядерного, асинхронного программирования в синхронном стиле
а в чём именно уникальность go в плане конкурентного программирования? каналы?

Roman
15.04.2018
12:47:13
а в чём именно уникальность go в плане конкурентного программирования? каналы?
goroutines, нет ни одного языка кроме Erlang со встроенным scheduler'ом корутин.

Subbotin
15.04.2018
12:49:14
а в чём именно уникальность go в плане конкурентного программирования? каналы?
Ничего конкретного уникального нету. Корутины и каналы это не изобретение гошечки, но ориентированность на удобную с ними работу это только го и эрланг.

Google
yuriy
15.04.2018
12:52:41
Ничего конкретного уникального нету. Корутины и каналы это не изобретение гошечки, но ориентированность на удобную с ними работу это только го и эрланг.
да, просто очень удобный воркфлоу, люди продумали от начала до конца как с этим работать чтобы получалось красиво

Alexander
15.04.2018
13:54:29
Есть тут люди которые застали/использовали jms serializer на пыхе?

И те кто теперь перешли на го

MrSmeet
15.04.2018
14:21:01
Александр
15.04.2018
14:21:30
ну это 140-150 в мск

не совсем еда

MrSmeet
15.04.2018
14:21:42
в снг да небольшие зп
Небольшие - пиши прямо, за такое лучше и не работать

Александр
15.04.2018
14:21:44
но не 200 :(

MrSmeet
15.04.2018
14:22:42
concurrency. Go уникален в плане конкуррентного, многоядерного, асинхронного программирования в синхронном стиле
С месаги поржал. А уникальность в чем? Грин потокам лет 20 как а го потоки по прупозалу и мат модели уже везде завезли

yuriy
15.04.2018
14:22:47
ты сделал 2 вывода, и дал рекомендации о которых никто не просил :)

Страница 1366 из 1674