
Maxim
04.03.2017
18:07:42
https://toby3d.ru/telegraph
Раз уж начали ссылками бросаться

Roman
04.03.2017
19:15:36

Kirill
04.03.2017
19:16:01

Google

Roman
04.03.2017
19:16:26
Не очень то и хотелось!

Kirill
04.03.2017
19:16:52
я просто сразу отреагировал.

Roman
04.03.2017
19:18:26
Для денег есть джава :)

Kirill
04.03.2017
19:19:18

Mikhail
04.03.2017
19:25:09

Stanislav
04.03.2017
19:54:22
Давайте на питон перепишу

Dmitry
04.03.2017
19:54:37
?
только не говори что переписал.

Roman
04.03.2017
19:58:36

Constantine
04.03.2017
19:58:56
?
понеслись торги

Stanislav
04.03.2017
20:00:02

Google

Mikhail
04.03.2017
20:00:49

Kirill
04.03.2017
20:05:16

Stanislav
04.03.2017
20:06:11
Это идея
Аутсорс скидывать не людям а в чаты
Будут цену сбивать сами

Roman
04.03.2017
22:18:09
а вы когда нибудь оказывались в такой ситуации когда подумали: "Слава богу существуют goroutine'ы, решить проблему традиционным путём было бы намного сложнее"?

Phil
04.03.2017
22:19:51

Roman
04.03.2017
22:20:33

Phil
04.03.2017
22:22:50
Вот у меня пока ещё не переписан сервис whois - он на твистеде. Я его использую для проверки занятости домена и подбора для клиента. Писать и поддерживать это было адом

Maxim
04.03.2017
22:24:40
Исполнение функций в "фоне" через горутины, пока идёт основной алгоритм - считается?
Или это слишком тривиальная вещь?

Phil
04.03.2017
22:25:33
АААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Всех новых буду кикать. Пусть будет ацкий чатик

Roman
04.03.2017
22:26:01
Блин, хорошо что я про Джаву не вспоминал вечерком
Задумался. Как на go выглядит решение event loop ? Или могло бы выглядить? Или не могло бы.

Phil
04.03.2017
22:28:12
Чо?

Roman
04.03.2017
22:28:33

Roman
04.03.2017
22:29:53
Чо?
Ну вот в вебе JavaScript, а в андроиде Java - сплошные listener. Как это выглядит на Го?

Roman
04.03.2017
22:31:27

Google

Denis
04.03.2017
22:40:48
Ну ивент дравин говно ж

Phil
04.03.2017
22:40:51

Denis
04.03.2017
22:41:03
Нажрался в ноде по самое не балуй
Может для гуев
И ок

Phil
04.03.2017
22:41:29

Denis
04.03.2017
22:42:00
Ох
Мы о разном

Phil
04.03.2017
22:44:07
??? ну выражайся яснее

Roman
04.03.2017
22:49:21

Phil
04.03.2017
22:51:14

Roman
04.03.2017
22:56:50
не "драйвен" а "дривен" плиз))

Constantine
04.03.2017
22:57:06
драйвер
чтоб ты спал плохо
понял?

Kirill
04.03.2017
22:57:32

Roman
04.03.2017
22:58:05
ничто не мешает в Go определяет event handler'ы, это даже очень кстати в решениях некоторых определённых задач

Phil
04.03.2017
23:00:15
какая блеать парадигма? вы тут все с ума сошли? go и есть event driven. это его фишка
не надо его там писать. оно в нём внутри

Google

Roman
04.03.2017
23:12:49

Phil
04.03.2017
23:14:35
ээээ... нет же

Roman
04.03.2017
23:15:54

Phil
04.03.2017
23:16:32
Го позволяет писать сопрограммы. А то что там ивент дривен - это факт из биографии его рантайма. Никакого ивент дрийвен в алгоритмах мы не имеем ввиду.

Roman
04.03.2017
23:17:13
ну хотя по сути даже каналы event driven

Admin
ERROR: S client not available

Phil
04.03.2017
23:19:06
нууу... ну.... ну ок, каналы наверное да

Stanislav
04.03.2017
23:23:45
Она испортила число
Кикиик

Roman
05.03.2017
02:08:19
В Go event driven только на уровне реализации runtime. И благодаря горутинам он дает на ротан всем этим event driven фреймворкам других языков программирования с их не умными коллбеками.

Yura
05.03.2017
06:24:27
Даже в go порою хочется кусочек event-driven/callback-helled. Хотя бы потому, что оно все-таки все еще быстрее, чем горутины, и памяти меньше ест.
Но это исключительные ситуации.

wf
05.03.2017
06:50:08

Yura
05.03.2017
07:15:12
Про шедулер кто-то вчера ссылку кинул.
Шедулер у go замечательный. Думаю, шедулить стэкфул корутины быстрее вряд ли получится.
Но сам факт, что шедулятся стжкфул корутины, накладывает ограничение на перформанс: как минимум, стэк каждой корутины засирает кэш процессора. В коллбэк режиме стэк переиспользуется, и потому кэш расходуется эффективнее.
Вторая проблема, о которой я слышал как минимум дважды за последнее время: каждый Read() блокирует горутину, и требует памяти на буфер. Если у тебя сотни тысяч сокетов, каждый из которых пишет максимум раз в минуту, получается огромный перерасход памяти.


Roman
05.03.2017
08:36:05
Мне интересен пример кода, как организовать Event Loop модель в Го, с каналами или как то еще, да. Мы не говорим сейчас об интерфейс браузера или андроида. Возмем чего по-проще.
Например, есть IoT демон управления теплицей, который слушает датчики - вкл/выкл, получает данные фотосенсора и дает команды на включение насосов и обогревателей. Два листенера и два воркера, все полностью асихронные и тред-сейф.
Как это должно выглядеть в коде?

Quet
05.03.2017
08:47:22
каждый листенер и воркер в своей горутине

Alexander
05.03.2017
08:50:44

Roman
05.03.2017
09:04:45
Примера, как я понимаю, не будет?

⠀
05.03.2017
09:47:57
бьёшь на горутины, связываешь каналами, profit

wf
05.03.2017
09:55:20
Примера, как я понимаю, не будет?
package main
import (
"fmt"
"time"
"math/rand"
)
func worker(cmds <-chan int) {
for cmd := range cmds {
fmt.Printf("Worker: %d\n", cmd)
// Do the work
}
}
func main() {
cmds := make(chan int, 10)
// Start workers pool
for w := 0; w < 4; w++ {
go worker(cmds)
}
//Listener here
for i:=0;i<50;i++ {
cmds <- rand.Intn(100)
time.Sleep(time.Duration(1)*time.Second)
}
}
Только тут один листенер

Google

Phil
05.03.2017
10:10:52
чо? сфига ли?
Прочитал. А с коллбэками на таких же цифрах будет конечно как-то иначе

Serge
05.03.2017
10:17:30
А вот коллеги, есть ли какая-то либа для распространения событий между разными горутинами?
Хочется иметь типа диспетчер каналов с разными событиями. Иметь возможность взять канал у диспетчера и в него закинуть. А в нескольких горутинах подписаться на этот канал и получать одно и тоже.
Типа, диспетчер pubsub на fan-in/fan-out.
Бывает такое или самому писать?

Roman
05.03.2017
10:25:41


Alexander
05.03.2017
10:27:49
Мне кажеца, или пытаешься сделать мозги умного дома?

Roman
05.03.2017
10:29:43
Нет, я пытаюсь понять возможности Go.
Пример с теплицей скопирован из книжки про язык, который злесь нельзя называть.
Мы вот ругаем, например Джаву или Джаваскрипт. А я попытался представить, как писать на Go, например, под Андроид в парадигме именно этой системы. И понял вдруг, что никак.
Точнее, писать то конечно можно, но вот что бы было просто и понятно. Вместо одного хелла попадем в другой.

⠀
05.03.2017
10:43:43

Denis
05.03.2017
10:45:33
Так в чем проблема написать publisher & subscriber
И подписываться на топики
Пробрасывать хендлеры
Будет копия js'кого addEventListener
Где первым аргументов ивент