
Olzhas
02.07.2018
13:44:44

Subbotin
02.07.2018
13:44:53
проще го тяжело быть

Olzhas
02.07.2018
13:45:15
Для каких-нибудь яйцеголовых хаскеллистов все изи наверное
Но мне вот в расте понравился cargo

Google

Olzhas
02.07.2018
13:45:44
Крутая штука
Не то что эти всякие vgo или dep
Когда на го пишешь, ощущение что пишешь хелловорлды

Vadim
02.07.2018
13:47:31
Ну для кого-то раст легкий язык
Смотри, на го можно даже js-ера пересадить меньше чем за неделю. С растом такого не будет. Также нет GC, что тоже является сложностью для джунов. Синтаксис посложнее.(Ещё я слышал, что он постоянно меняется).

Olzhas
02.07.2018
13:47:51
Стабильнее, чем два года назад

Subbotin
02.07.2018
13:48:16
ну типа у всех своя ниша. вот на питоне ахуенно легко прототипировать и работать с внешними апи. а также орм и сайтики хуячить.
гошечка позволяет за два часа напилить быстрый многопоточный достаточно производительный микросервис.
а на расте удобно разрабатывать низкоуровневое или гигантскую монолитную софтину с высоким переиспользованием кода и надёжностью

Olzhas
02.07.2018
13:48:36
И вот у нас есть выбор

Roman
02.07.2018
13:49:27

Olzhas
02.07.2018
13:49:28
Писать большое и сложное приложение на го, расте, жаба/шарпе или пхп
Если бы я умел в расте что-то сложнее хеловорлдов писать, я бы выбрал раст

Google

Vadim
02.07.2018
13:50:44

Olzhas
02.07.2018
13:51:51
Го какой-то игрушечный
Правда когда смотришь что на нем пишут
Уже так не кажется

Roman
02.07.2018
13:53:01

Subbotin
02.07.2018
13:53:02
да мне страшно становится когда я вижу какие груды софта напилены на си. гвозди бы из тех людей делать.

Vadim
02.07.2018
13:53:17
Го какой-то игрушечный
Смотри, чем проще, тем лучше. Разделяешь задачу на кучу маленьких задач. Как говорится, разделяй и властвуй.

Диёр
02.07.2018
13:53:26

Roman
02.07.2018
13:53:38
про гошечку: https://github.com/intel-go/nff-go

Vadim
02.07.2018
13:53:58

Olzhas
02.07.2018
13:55:29

Roman
02.07.2018
13:55:56

Olzhas
02.07.2018
13:56:19
Гил
В пхп есть треды
Скорость

Daniel
02.07.2018
13:56:34
коллеги
давайте без языкосрача, а?

Olzhas
02.07.2018
13:56:47

Roman
02.07.2018
13:56:52

Daniel
02.07.2018
13:57:31
новый язык - это всегда интересно, но кой толк мусолить сто раз обмусоленное.

Google

Roman
02.07.2018
13:57:41
Гил
в пхп он тоже есть. строго говоря, во всех скриптовых языках где есть треды и не надо явно защищать объекты мьютексами есть gil

Daniel
02.07.2018
13:57:52
возвращаясь к тому новому - похоже, в нем нет смысла (пока?)

Roman
02.07.2018
13:57:54

Daniel
02.07.2018
13:58:17
ну dsl тоже бывыют крутыми и полезными

Vadim
02.07.2018
13:59:08

Roman
02.07.2018
13:59:22

Olzhas
02.07.2018
13:59:31

Vadim
02.07.2018
13:59:33
Лучше тогда уж пони посмотреть.

Глеб
02.07.2018
13:59:56
разбавлю : кто использовал https://github.com/dgraph-io/badger
по памяти он как?
в том году на пару проектах радовался от dgraph, ток текла она до смерти.

Roman
02.07.2018
14:00:51

Olzhas
02.07.2018
14:03:57
facepalm
в пхп же copy on write, если юзать pthreads и менять переменную по указателю, то скрипт выкинет фатал еррор и прекратит работу
ну и используется только в cli

Roman
02.07.2018
14:35:17
https://github.com/intel-go/nff-go/blob/master/packet/vlan.go
хехе.. unsafe через unsafe

Stanislav
02.07.2018
14:38:59

Roman
02.07.2018
14:42:19
сам проект https://github.com/intel-go/nff-go выглядит огонь

Stanislav
02.07.2018
14:46:46
в каком смысле? )
в смысле что интел много чего делает в сетевом направлении. ну и что только на дпдк не остановились ?

Roman
02.07.2018
14:49:18
а... ну да. они стараются двигать dpdk.

Roman
02.07.2018
14:49:35

Google

Roman
02.07.2018
14:50:06

Roman
02.07.2018
14:51:16

Roman
02.07.2018
14:51:31
сотни гигабит/миллионов пакетов в секунду

Stanislav
02.07.2018
14:52:08
на 1 ядре в районе 14 миллионов пакетов в секунду ) при кое каких нюансах

Диёр
02.07.2018
14:53:04

Roman
02.07.2018
14:53:05
эвоно как

Roman
02.07.2018
14:53:05

Диёр
02.07.2018
14:53:13
можно сказать haskell это dsl для теорката

Roman
02.07.2018
14:53:53

Roman
02.07.2018
14:54:08
https://github.com/intel-go/nff-go/blob/master/low/low.go#L263
а вот смысл такой оптимизации - параллельный доступ к памяти?

Stanislav
02.07.2018
14:55:38

Roman
02.07.2018
14:56:17
@themiron

Vladislav
02.07.2018
14:56:32
м?

Roman
02.07.2018
14:57:29
м?
https://github.com/intel-go/nff-go/blob/master/low/low.go#L263
для чего такая оптимизация? )
руками развернули цикл и ходят кусками по 4шт

Vladislav
02.07.2018
14:58:29
ага, думаю для более эффективной утилизации шины

Александр
02.07.2018
14:59:20

Google

Vladislav
02.07.2018
15:00:19
а на stosd/stosq есть картинка? )

Александр
02.07.2018
15:01:07
не, я и так дико рискую
проснется вий же

Vladislav
02.07.2018
15:01:59

Roman
02.07.2018
15:02:56

Vladislav
02.07.2018
15:04:15
да не особо, далеко не все умеет в unaligned доступ. некоторые контроллеры прям требуют выровненный доступ
memcpy тут могло не соптимизироваться в 32bit

Subbotin
02.07.2018
15:13:23
Я тоже пошел

Roman
02.07.2018
15:16:19
Ребят, ещё раз задам вопрос, который был успешно проигнорирован:
Если у меня поле в JSON может быть двух типов зависимо от значения свойства __typename то как его анмаршалить?

Karachun
02.07.2018
15:17:04
в интерфейс)

Александр
02.07.2018
15:17:43
хотя решение конечно такое себе


Roman
02.07.2018
15:19:09
в интерфейс)
интерфейс мне даст map[string]interface{}, а мне не нужен сплошной мап, у меня есть type Admin struct и type User struct..
type Post struct {
Author /*either Admin or User*/
}
хотя решение конечно такое себе
вот нынешнее решение:
// PostAuthor represents a union type that's either an Admin or a User
type PostAuthor struct {
Admin *Admin
User *User
}
// MarshalJSON implements the Go JSON interface
func (a PostAuthor) MarshalJSON() ([]byte, error) {
// TODO
return nil, nil
}
// UnmarshalJSON implements the Go JSON interface
func (a *PostAuthor) UnmarshalJSON(bytes []byte) error {
var fields map[string]interface{}
if err := json.Unmarshal(bytes, &fields); err != nil {
return err
}
typeName, hasTypeName := fields["__typename"]
if !hasTypeName {
return fmt.Errorf("Missing __typename during unmarshalling")
}
switch typeName.(string) {
case "Admin":
return а.unmarshalAdmin(bytes)
case "User":
return а.unmarshalUser(bytes)
default:
return fmt.Errorf("Unexpected __typename: %s", typeName)
}
}
но в таком случае в a.unmarshalAdmin и a.unmarshalUser нужно вручную анмаршалить структуру
есть идеи как можно предотвратить анмаршалинг вручную?


Александр
02.07.2018
15:30:55
неа
гоу не любит динамической структуры

Aleksei ?
02.07.2018
15:48:18
Вот как не стыдно! Жс в отцы годится go
Go 1.11: WebAssembly for the gophers
https://t.co/LGhQtbro9x
Да, да в Go 1.11 будет поддержка WebAssembly. Может быть скоро весь фронтенд будет писаться на нормальных языках.
Как фронтендер со стажем скажу, что такое вряд-ли произойдёт в ближайшем будущем, но есть интересный проект vecty и он приближает нас к этому моменту ?

Roman
02.07.2018
16:01:33